2013-07-11 44 views
0

我正在尝试使用FF add-on builder编写我的第一个Firefox扩展。我不明白为什么看起来我的代码没有运行,因为alert都没有弹出。 alert("Main");为什么不创建一个弹出窗口?使用Firefox附加组件生成器中的警报

main.js

alert("Main"); 
var data = require("sdk/self").data; 
var pageMod = require("sdk/page-mod"); 
pageMod.PageMod({ 
    include: "*", 
    contentScriptFile: data.url("noredirectlinks.js"), 
    contentScriptWhen: "ready" 
}); 

noredirectlinks.js

alert("Content script"); 
var allLinks = document.getElementsByTagName("a");  
for (var i=0, il=allLinks.length; i<il; i++) { 
    elm = allLinks[i]; 
    if (elm.getAttribute("onclick")) { 
     elm.onclick = null; 
    } 
    if (elm.getAttribute("onmousedown")) { 
     elm.onmousedown = null; 
    } 
} 

回答

1

alertmain.js不能显示在浏览器中任何东西。主插件代码无法访问浏览器页面。要访问内容,您必须使用content scripts(作为第二个脚本)。

alertnoredirectlinks.js应该工作。我将首先在main.jsalert之后再次测试。然后,您必须确保该文件位于data文件夹中。是这样吗?

在你没有提供的代码中可能还存在另一个错误,这可能解释为什么不执行插件。还有其他的代码还是这一切?

+0

我在'main.js'中删除了警报,感谢那里的解释。 当我再次测试时,'noredirectlinks.js'中的警报起作用。然而,起初我并不认为这是因为我在本地HTML文件上测试过它。出于某种原因,不符合'“*”'模式,但其他网站显示警报。 是的,它在数据文件夹中,这就是一切。 我不认为它有任何错误,因为我可以让它作为Chrome扩展工作。然而,某些行为的行为与我预期的不同,因为如果我点击某个链接并点击链接,“onmousedown”事件仍然会发生。 – GDanger

+0

我在这里也是新来的,因为LaurentG回答了问题,因为我应该重新发布一个新问题来解释为什么我没有根据需要取消“onmousedown”事件? – GDanger

+0

您应该使用'content.document'访问文档。请参阅[本页](https://developer.mozilla.org/en-US/docs/Extension_Frequently_Asked_Questions#Accessing%5Fthe%5Fdocument%5Fof%5Fa%5Fwebpage%5Fdoesn%27t%5Fwork)。 – LaurentG

相关问题