chrome 扩展可以访问和更改静态 HTML 资产吗?
Can a chrome extension access and alter a static HTML asset?
我想构建一个 Chrome 扩展,它能够将脚本标记注入静态服务的 HTML 文件(不是页面本身,即不是 index.html ).
我可以在主要实际页面(即index.html
)上使用我的清单中的内容脚本执行此操作:
...
"content_scripts": [
{
"js": ["script.js"],
"run_at": "document_start"
}
],
...
...和 document.body.insertAdjacentHTML('afterbegin', '[SCRIPT_PATH]');
in script.js
,但我想做的是在另一个 HTML 文件上执行此操作作为 asset,BTW 是作为 Web 组件从我的主要 index.html
导入的。
换句话说,内容脚本可以访问(和 modify/alter)静态 HTML 文件作为源文件(主要 index.html
除外)吗?
谢谢!
编辑:这是我的结构:
index.html内容:
<!DOCTYPE html>
<html>
<head>
<title>Yay!</title>
<link rel="import" href="foo.html">
</head>
<body>
Sexy body woop!
</body>
</html>
foo.html内容:
<script src="bar.js"></script>
<!-- here I want the Chrome extension's content script to inject another script -->
您可以使用 <link>
元素的 import
属性访问导入的文档。
var link = document.querySelector( 'link[href="foo.html"]' )
var importedDoc = link.import
然后您可以像处理主文档一样操作导入的 HTML 文档:
//get the bar.js script element
var script = importedDoc.querySelector( 'script[src="bar.js"]' )
//append your script after it
importedDoc.body.insertBefore( yourScript, script.nextSibling )
我想构建一个 Chrome 扩展,它能够将脚本标记注入静态服务的 HTML 文件(不是页面本身,即不是 index.html ).
我可以在主要实际页面(即index.html
)上使用我的清单中的内容脚本执行此操作:
...
"content_scripts": [
{
"js": ["script.js"],
"run_at": "document_start"
}
],
...
...和 document.body.insertAdjacentHTML('afterbegin', '[SCRIPT_PATH]');
in script.js
,但我想做的是在另一个 HTML 文件上执行此操作作为 asset,BTW 是作为 Web 组件从我的主要 index.html
导入的。
换句话说,内容脚本可以访问(和 modify/alter)静态 HTML 文件作为源文件(主要 index.html
除外)吗?
谢谢!
编辑:这是我的结构:
index.html内容:
<!DOCTYPE html>
<html>
<head>
<title>Yay!</title>
<link rel="import" href="foo.html">
</head>
<body>
Sexy body woop!
</body>
</html>
foo.html内容:
<script src="bar.js"></script>
<!-- here I want the Chrome extension's content script to inject another script -->
您可以使用 <link>
元素的 import
属性访问导入的文档。
var link = document.querySelector( 'link[href="foo.html"]' )
var importedDoc = link.import
然后您可以像处理主文档一样操作导入的 HTML 文档:
//get the bar.js script element
var script = importedDoc.querySelector( 'script[src="bar.js"]' )
//append your script after it
importedDoc.body.insertBefore( yourScript, script.nextSibling )