gpt4 book ai didi

javascript - 在 Firefox 扩展弹出窗口中执行 javascript

转载 作者:行者123 更新时间:2023-11-30 11:25:38 43 4
gpt4 key购买 nike

我目前正在迈出扩展开发的第一步。目前,我只是想在按下按钮时出现的弹出窗口中显示一些信息。问题是它是动态信息,是我从互联网上的 JSON 文件中收集的。然而,我无法让数据显示在弹出窗口中,我已经将问题缩小到它似乎根本不运行任何 Javascript 的程度......

我有一个非常简单的代码:

list .json:

    {

"manifest_version": 2,
"name": "Test Extention",
"version": "1.0",

"description": "",

"icons": {
"256": "icon/button.png"
},
"permissions": [
"activeTab",
"storage"
],
"browser_action": {
"default_icon": {
"200": "icon/button.png"
},
"default_title": "Test Extention",
"default_popup": "popup/popup.html"
}
}

弹出窗口/popup.html:

<html>
<head>
<meta charset="utf-8">
<style>
html,body{width:300px}
</style>
</head>
<body>
<div id="container"></div>
<script>
document.getElementById('container').innerHTML = 'testing';
</script>
</body>
</html>

当我直接在 firefox 中运行 html 文件时,它会按预期显示“testing”。但是,当我运行扩展程序时,单击新建按钮时出现一个空的弹出窗口。

我也试过将 js 代码放在一个函数中,然后用一个按钮调用它,看看它是否需要一些时间才能运行 js 代码,但这也不起作用。

我确信这是我所缺少的非常简单的东西,但我找不到任何东西......

最佳答案

WebExtension API 有一个 Content Security Policy默认应用于它们。所以它不能在弹出的 HTML 文件中执行内联 javascript 代码。

不仅:

<script>
document.getElementById('container').innerHTML = 'testing';
</script>

还有:

<button onclick="alert('hello')">Hello</button>

如果你触及这个规则,你会在Browser Toolbox中得到一些错误信息。和 Add-on Debugger .

因此,要解决此问题,请使用 <script src="..."></script>而不是 <script>...</script> .

或者,可以设置 Unsafe inline scriptcontent_security_policy manifest.json 中的键也可以解决这个问题。但是 MDN 告诉我:

Note: Valid examples display the correct use of keys in CSP. However, extensions with 'unsafe-eval', 'unsafe-inline', remote script, blob, or remote sources in their CSP are not allowed for extensions listed on addons.mozilla.org due to major security issues.

this page .看来不是什么好办法。

关于javascript - 在 Firefox 扩展弹出窗口中执行 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48130512/

43 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com