2016-01-10 36 views
2

我正在使用Jetpack,能够与浏览器内容交互的Firefox侧栏插件,特别是我的目标是能够从插件中选择网页DOM对象并收集来自我的插件页面的信息。修改页面的Firefox插件DOM

我的主要观点是,我想从一个脚本,不直接插件本身内部访问网页:

插件可以加载外部服务(从我的服务器),并可以访问网页浏览器页面DOM。

这是由于这样的事实,我想在侧边栏的Firefox插件从实际的业务逻辑中分离出来,为了改变这种不释放另外一个插件...

这可能吗?如果是,如何?

+0

我认为这是可能的,但如果您尝试验证并更新扩展插件市场,则您创建的插件将会出现问题。如果这不是问题,您可以将脚本附加到页面并从您的服务器加载JS。然后你可以访问DOM。 –

+0

谢谢你的回答。插件的目的不是在插件市场上传递的,所以我想这不是问题。 你有任何想法如何包含脚本? – Gian

+0

你使用jpm或其他东西从插件构建? –

回答

1

您可以将工人的任何新的标签,如: main.js

var pageMod = require("sdk/page-mod"); 

pageMod.PageMod({ 
    include: "*", 
    contentScriptWhen: 'ready', 
    contentScriptFile: [ 
    data.url("jquery.min.js"), 
    data.url("script.js") 
    ] 
}); 

上面的代码只是接jQuery和你的script.js到任何页面。你可以找到更多关于附加脚本的选项here。注意:script.js和jquery.min.js应位于扩展的./data/文件夹中。

现在,我们在每个页面上运行script.js。我们如何从另一台服务器执行代码?

您可以使用jQuery.getScript()来实现。

例如,在您的script.js

var url = "https://code.jquery.com/color/jquery.color.js"; 
$.getScript(url, function() { 
    $("#go").click(function() { 
    $(".block") 
     .animate({ 
     backgroundColor: "rgb(255, 180, 180)" 
     }, 1000) 
     .delay(500) 
     .animate({ 
     backgroundColor: "olive" 
     }, 1000) 
     .delay(500) 
     .animate({ 
     backgroundColor: "#00f" 
     }, 1000); 
    }); 
}); 

您可以修改的script.js自己的需要。