1
我正在做一些非常简单的事情......我无法弄清楚。我创建了一个扩展,它所做的就是获得一个变量。我希望能够从我的网页访问该变量。有什么想法吗?从Firefox扩展中获取变量
有点背景,为什么我这样做。我需要使用chrome访问来获得这个变量,这就是为什么我首先做了这个扩展。
我正在做一些非常简单的事情......我无法弄清楚。我创建了一个扩展,它所做的就是获得一个变量。我希望能够从我的网页访问该变量。有什么想法吗?从Firefox扩展中获取变量
有点背景,为什么我这样做。我需要使用chrome访问来获得这个变量,这就是为什么我首先做了这个扩展。
对于将数据从chrome(priveleged)发送到非特权文档(网页)的某些代码示例,您可能需要查看此链接:Interaction between privileged and non-privileged pages。
在扩展:
var myExtension =
{
myListener: function(evt)
{
alert("Received from web page: " +
evt.target.getAttribute("attribute1") + "/" +
evt.target.getAttribute("attribute2"));
/* the extension answers the page*/
evt.target.setAttribute("attribute3", "The extension");
var doc = evt.target.ownerDocument;
var AnswerEvt = doc.createElement("MyExtensionAnswer");
AnswerEvt.setAttribute("Part1", "answers this.");
doc.documentElement.appendChild(AnswerEvt);
var event = doc.createEvent("HTMLEvents");
event.initEvent("MyAnswerEvent", true, false);
AnswerEvt.dispatchEvent(event);
}
}
document.addEventListener("MyExtensionEvent", function(e) { myExtension.myListener(e); }, false, true);
// The last value is a Mozilla-specific value to indicate untrusted content is allowed to trigger the event.
在网页:
document.addEventListener("MyAnswerEvent",function(e) { ExtensionAnswer(e); },false);
var element;
function CallExtension()
{
var element = document.createElement("MyExtensionDataElement");
element.setAttribute("attribute1", "foobar");
element.setAttribute("attribute2", "hello world");
document.documentElement.appendChild(element);
var evt = document.createEvent("Events");
evt.initEvent("MyExtensionEvent", true, false);
element.dispatchEvent(evt);
}
function ExtensionAnswer(EvtAnswer)
{
alert(element.getAttribute("attribute3") + " " +
EvtAnswer.target.getAttribute("Part1"));
}
希望这有助于。
嗯,这并不能真正帮助我。我想要做的是在加载时将变量(在浏览器启动时已保存在我的扩展中)传递到我的网页。防爆。所以我想我的扩展中必须有某种信使侦听器,当我的网页加载时它会请求变量,然后消息侦听器会将它发送到我的网页,在那里它将被保存和使用。 – jdpahl122
我提到的链接也有一个例子,如何将数据从非特权文档发送到chrome。他们一起可以形成双向沟通,但我承认,我从来没有亲自尝试过这一点。 – GitaarLAB