2013-03-28 87 views
1

我正在做一些非常简单的事情......我无法弄清楚。我创建了一个扩展,它所做的就是获得一个变量。我希望能够从我的网页访问该变量。有什么想法吗?从Firefox扩展中获取变量

有点背景,为什么我这样做。我需要使用chrome访问来获得这个变量,这就是为什么我首先做了这个扩展。

回答

0

对于将数据从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")); 
} 

希望这有助于。

+0

嗯,这并不能真正帮助我。我想要做的是在加载时将变量(在浏览器启动时已保存在我的扩展中)传递到我的网页。防爆。所以我想我的扩展中必须有某种信使侦听器,当我的网页加载时它会请求变量,然后消息侦听器会将它发送到我的网页,在那里它将被保存和使用。 – jdpahl122

+0

我提到的链接也有一个例子,如何将数据从非特权文档发送到chrome。他们一起可以形成双向沟通,但我承认,我从来没有亲自尝试过这一点。 – GitaarLAB