[英]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.