簡體   English   中英

通過內容腳本將JavaScript注入XML文件

[英]Inject javascript in XML file via content script

我知道xml中實際上不應該包含JavaScript,但是我正在做一個瀏覽器擴展,需要在每個頁面上注入一些代碼以為用戶提供一些有趣的統計信息。

問題是,我無法使注入的代碼在XML文檔中運行,因為看起來我創建的腳本標簽被視為文本?

相同的代碼在HTML中可以正常工作

這是我所擁有的:

manifest.json

"content_scripts": [
    {
      "matches": ["<all_urls>"],
        "all_frames": true,
        "match_about_blank": true,
        "run_at": "document_start",
        "js": ["scripts/content/countCalls.js"]
    }
  ]

countCalls.js

let injectedCode = 'console.log("Hello from injected code");';
let script = document.createElement('script');
script.appendChild(document.createTextNode(injectedCode));

let parent = document.head || document.body || document.documentElement;
let firstChild = (parent.childNodes && (parent.childNodes.length > 0)) ? parent.childNodes[0] : null;
if (firstChild) {
  parent.insertBefore(script, firstChild);
} else {
  parent.appendChild(script);
}

test.xml

<?xml version="1.0"?>
<main xmlns='http://www.w3.org/1999/xhtml'>
<script>
console.log("Hello from XML");
</script>
</main>

當我在瀏覽器中加載test.xml時,我看到以下內容:

console.log(“您好,注入的代碼”);

在控制台中,我只看到以下內容:

您好,來自XML

因此,注入的代碼被視為文本。 反正這嗎? 否則,有意向xml中添加javascript將導致其繞過擴展名

只需使用與XML兼容的名稱空間創建腳本DOM元素即可:

let script = document.createElementNS('http://www.w3.org/1999/xhtml', 'script');

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM