Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript不在本地页面上运行_Javascript_Firefox_Firefox Addon_Firefox Addon Webextensions - Fatal编程技术网

Javascript不在本地页面上运行

Javascript不在本地页面上运行,javascript,firefox,firefox-addon,firefox-addon-webextensions,Javascript,Firefox,Firefox Addon,Firefox Addon Webextensions,我有一个非常简单的webextension,它应该在单击按钮时在新窗口中打开本地页面: function openMyPage() { var popupURL = chrome.extension.getURL("my-page.html"); chrome.windows.create({ url: popupURL, type: "popup", height: 200, width: 200 }); } chro

我有一个非常简单的webextension,它应该在单击按钮时在新窗口中打开本地页面:

function openMyPage() {
    var popupURL = chrome.extension.getURL("my-page.html");

    chrome.windows.create({
      url: popupURL,
      type: "popup",
      height: 200,
      width: 200
    });
}

chrome.browserAction.onClicked.addListener(openMyPage);
在my-page.html中,我想运行一些javascript,但无法运行。即使是简单的脚本也不会执行:

<html>
   <body>
     <script type="text/javascript">
        document.write("JS executed")
     </script>
   </body>
</html>
它直接取自Mozilla的一个示例。

内联脚本不适用于默认的内容安全策略 您可能会遇到以下情况:

"script-src 'self'; object-src 'self';"
也就是说。换句话说,HTML中不允许出现以下情况:

<script type="text/javascript"> document.write("JS executed")</script>
并且,在manifest.json中添加以下行:


Javascript控制台中有错误吗?您可以在扩展中执行的JS中有一些限制,请检查此文档并提供manifest.json文件。我们需要一个完整的程序来复制这个问题。@Dario这似乎是正确的线索。那页上的例子几乎正是我想做的。我会看一看,谢谢。你打开页面时(Ctrl-Shift-J或OSX上的Cmd-Shift-J)显示了什么。我猜它显示了如下内容:
contentsecuritypolicy:page的设置阻止了self加载资源(“scriptsrcmoz”)-extension://nnnnnnnn-nnnn-nnnn-nnnn-nnnnnnnnnnnn”).          my page.html
@s3rius,如果您真的想使用内联脚本,请更新。这就成功了,谢谢。恼人的是,我自己没有发现这一点,但令人沮丧的是,谷歌毫无用处,因为“javascript在本地页面中不起作用”这样的问题会返回一百万条信息,而这些信息都不相关。@s3rius,我很高兴我能帮上忙。我发现它的方式是在查看(OSX上的Ctrl-Shift-J或Cmd-Shift-J)时实际尝试它。一旦我在我对你的问题的评论中提到了错误消息,搜索这个问题就相对容易了。浏览器控制台通常非常有用(尽管有时有太多来自其他插件/Firefox的信息需要过滤掉)。事实上,在问这个问题之前,我甚至不知道控制台存在。我对网络内容的了解甚至连一茶匙都不够:)我对如何生成散列有点困惑。1) 标记之间的所有内容,例如
document.write(“JS executed”)2)使用不会强制添加行尾的文本编辑器,将其保存到文件中,例如
foo.txt
,无行尾字符。如果使用行尾字符,请确保它们的类型相同。3)
openssl dgst-sha256-binary foo.txt | openssl base64
输出
Z4nYjltJ/RciFs77n2n91dzwoz1Qg/1JFwU5ODwWPC8=
,所需的sha256哈希,base64从二进制编码,而不是十六进制。OpenSSL在大多数平台上都可用,但也可能存在其他工具。
<script type="text/javascript"> document.write("JS executed")</script>
<script>console.log("foo");</script>
<div onclick="console.log('click')">Click me!</div>
<script type="text/javascript" src="my-page.js"></script>
<script type="text/javascript">document.write("JS executed");</script>
"content_security_policy": "script-src 'self' 'sha256-Z4nYjltJ/RciFs77n2n91dzwoz1Qg/1JFwU5ODwWPC8='; object-src 'self';"