Firefox 扩展内容脚本不会加载和附加 HTML

2024-02-10

下面的所有内容都可以在 Chrome 扩展中运行,但在移植到 Firefox 时会默默失败:

  1. 加载中test.html除非我删除<style></style> from it
  2. 附加#test_element对身体

Firefox 扩展的样式是否必须放入单独的文件中?为什么append() fail?

test.js

$(document).ready(function() {
    $.get(chrome.extension.getURL('/html/test.html'), function(data) {
        // not called unless style element is removed from HTML
        // and never actually appended if it is removed
        $(document.body).append($.parseHTML(data));
    });
});

测试.html

<style></style>
<div id="test_element">
    <p>my name is cow</p>
</div>

清单.json

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

    "icons": {
        "64": "icons/icon-64.png"
    },

    "permissions": [
        "tabs",
        "storage",
        "idle"
    ],

    "content_scripts": [
        {
            "matches": ["<all_urls>"],
            "js": ["lib/jquery.js", "src/test.js"]
        }
    ],

    "web_accessible_resources": [
        "html/test.html"
    ]
}

它不是默默地落在我身上,而是给了我:

  XML Parsing Error: junk after document element
  Location: https://www.google.gr/
  Line Number 2, Column 1

这是因为它不是有效的 XML 文档(只应存在一个根元素)。

我使其工作的方法如下:

测试.html:(使其有效)

  <div>
    <style></style>
    <div id="test_element">
        <p>my name is cow</p>
    </div>
  </div>

test.js:(使用XMLSerializer)

  $(document).ready(function() {
      $.get(chrome.extension.getURL('/html/test.html'), function(data) {
          res = new XMLSerializer().serializeToString(data);
          $(document.body).append(res);
      });
  });
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Firefox 扩展内容脚本不会加载和附加 HTML 的相关文章

随机推荐