问题描述
以下是"main.js"
代码的一部分。
我的问题是,当我使用"option 1" url
,代码可以正常工作,但是当我使用"option 2" url
,则标记为要在"content-script.js"
上导出的函数(在"page.html"
可以看到) "page.html"
)在"page.html"
上无法正确显示。
我拥有所有必要的代码来导出和交流内容。 关键点只是在pageUrl格式上。 使用以下形式的文件系统url时似乎存在一些问题:
"file:///D:/page.html"
在上述情况下( file://
),出于某种原因未包含"contentScriptFile"
。
我是否需要对Firefox的安全性配置进行一些修改,例如在"about:config"
区域中?
任何想法?
// [option 1] pageUrl = "http://localhost:81/firefox_addon/page.html";
// [option 2] pageUrl = "file:///D:/page.html";
tabs.open({
url: pageUrl,
});
var pageMod = pageMods.PageMod({
include: ["*"],
contentScriptFile: self.data.url("content-script.js"),
onAttach: startListening
});
1楼
Dietrich Ayala
1
2015-07-31 00:05:58
我知道内容的脚本不具有相同的原产地政策,由原始文档本身包含的脚本,但它可能是同源策略被应用,由于文件的敏感性质://的URI。
您可以尝试在about:config中将security.fileuri.strict_origin_policy设置为false。
您可以在阅读更多内容。
另一个可能性是,由于file:// URI的敏感性,附加SDK有意禁用内容脚本。
无论哪种方式,请检查浏览器控制台并查看是否有任何相关的错误消息。
2楼
halfcube
0
已采纳
2015-08-07 13:02:26
在您的PageMod构造函数中,您将需要定义file://
模式以及*
通配符。
var data = require('sdk/self').data;
var pageMod = require('sdk/page-mod');
function startListening(){
// noop
}
pageMod.PageMod({
include: ['*', 'file://*'],
contentScriptFile: [
data.url('content-scripts.js')
],
onAttach: startListening
});
这使PageMod模块可以在file://
模式的file://
包含内容脚本。