繁体   English   中英

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

[英]Execute javascript in Firefox extension popup

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

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

manifest.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-code放在一个函数中,并用一个按钮调用它,看看是否需要一些时间才能运行js-code,但这也不起作用。

我确信这是一个非常简单的东西,我很想念,但我找不到任何关于此...

WebExtension API默认情况下应用了内容安全策略 因此它无法在弹出HTML文件中执行内联javascript代码。

不仅仅:

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

但是也:

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

如果您触及此规则,则可以在“ 浏览器工具箱”和“ 附加调试器”中收到一些错误消息。

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

或者,也可以将不安全的内联脚本设置为manifest.json中的content_security_policy键,也可以解决此问题。 但是MDN告诉我:

注意:有效示例显示CSP中密钥的正确使用。 但是,由于重大安全问题,addons.mozilla.org上列出的扩展名不允许在其CSP中使用“unsafe-eval”,“unsafe-inline”,远程脚本,blob或远程源进行扩展。

这个页面 这似乎不是好方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM