2014-10-11 132 views
0

我試圖製作一個firefox插件,它使用contentscript在特定頁面中插入.js文件。它的大部分工程,但我不斷得到這個奇怪的錯誤。Referenceerror:數據未定義

main.js

var pageMod = require("sdk/page-mod"); 
var self = require("sdk/self"); 
var data = require('sdk/self').data; 

pageMod.PageMod({ 
    include: ["http://www.google.com", 
      "https://ww.google.com" 
      ], 
    contentScriptFile: data.url("contentscript.js") 
}); 

contentscript.js

var s = document.createElement('script'); 
s.src = data.url('jquery.js'); 
s.onload = function() { 
    this.parentNode.removeChild(this); 
}; 
(document.head||document.documentElement).appendChild(s); 

setTimeout(function(){ 
    var d = document.createElement('script'); 
    d.src = data.url('script.js'); 
    d.onload = function() { 
     this.parentNode.removeChild(this); 
    }; 
    (document.head||document.documentElement).appendChild(d); 
},100) 

的script.js的內容是unrelevant,因爲它甚至沒有得到執行。錯誤發生在contentscript:2:1 Referenceerror:數據未定義。

請記住,它需要這樣做,腳本需要能夠修改DOM。

回答

0

您無法從內容腳本訪問data.url,只能通過main.js執行此操作。您可以在contentScriptOptions中從main傳遞腳本的文件路徑和名稱。

而且我不知道你打算用這個東西,但是如果你做include: ["https://www.google.com"]然後頁面-MOD只能在https://www.google.com工作。 include: "[*]"允許所有網站等。