2014-09-01 43 views
0

我开发了一个Firefox附加组件。在当我打电话使用contentScriptFile一个js文件就无法调用main.js,函数(的addEventListener)得到从来没有所谓的firefox插件中的contentScriptListener无法启动相应文件

*** Edit 1 *** 
Sorry for missing what I actually need . 
In get-text.js I need to send a XMLHttpRequest using GET method . If I attach my  javascript in panel.html , then I'm unable to receive the request thereby , 

我在这里附上

main.js整个文件文件

var { ToggleButton } = require('sdk/ui/button/toggle'); 
var panels = require("sdk/panel"); 
var self = require("sdk/self"); 
var data=require("sdk/self").data; 

var button = ToggleButton({ 
     id: "my-button", 
     label: "my button", 
     icon: { 
       "16": "./icon.png", 
       "32": "./icon.png", 
       "64": "./icon.png" 
      }, 
     onChange: handleChange 
}); 

var panel = require("sdk/panel").Panel({ 
     width:350, 
     contentURL: data.url("panel.html"), 
     contentScriptFile: data.url("get-text.js"), 
     onHide: handleHide 
}); 
function handleChange(state) { 
     if (state.checked) { 
     panel.show({position: button}); 
    } 
} 

function handleHide() { 
    button.state('window', {checked: false}); 
} 

GET-text.js文件

(function(){ 
    var init = function() { 
     var xhr = new XMLHttpRequest(); 
     xhr.open("GET", "http://www.hackerearth.com/chrome-extension/events/", true); 
     xhr.send(); 
     xhr.onreadystatechange = function() { 
      if(xhr.readyState===4) { 
       if(xhr.status===200) { 
        console.log("hello2"); 
        var json = JSON.parse(xhr.responseText); 
        console.log(json); 
       } else { 
        console.log("Status is :"+xhr.status); 
       } 
      } 
     }; 
}; 
console.log("function passing"); 
document.addEventListener('DOMContentLoaded', function() { 
    console.log("pankaj \t"); 
    init(); 
    }); 
}); 

*编辑1 *

+0

你正在使用addon-sdk所以用[标签:firefox-addon-sdk]标记你的东西:)做笔记,因为我看到你做了几次:) – Noitidart 2014-09-01 13:32:59

+0

'panel.show()'出现在任何地方你的插件? – Lori 2014-09-01 15:12:05

+1

@Noitidart因为我不知道,所以我会关心它。 – user1305313 2014-09-01 16:17:32

回答

0

如果需要赶DOMContentLoaded活动小组的文件,然后从panel.html下降contentScriptFile和包括get-text.js

(该脚本将具有相同的行为,with a subtle difference关于port机制)

记住,DOMContentLoaded将触发一次,当你调用Panel构造。对show/hide的后续调用将不会触发它。

+0

他可以通过在面板的'onHide'函数中执行'panel.destroy()'来多次执行DOMContentLoaded fire? – Noitidart 2014-09-01 21:34:44

+0

@paa通过你已经告诉的方法**我可以调用该事件,但不能有一个XMLHttpRequest到远程服务器** – user1305313 2014-09-02 04:33:27

+0

@ user1305313你的意思是当'get-text.js'通过'contentScriptFile'包含时,它能够做远程XHR? @Noitidart,我的观点是'show()'不会触发'DOMContentLoaded'。显然,当你调用'destroy()'并创建一个新的'Panel'时,它将触发事件。 – paa 2014-09-02 07:43:05