我正在开发一个Chrome扩展程序,它将根据以下清单加载内容脚本:
"content_scripts" : [
{
"matches" : [ "<all_urls>" ],
"js" : [ "scripts/namespace/namespace.js",
"scripts/log/Logger.js"]
"run_at" : "document_start",
"all_frames" : true
}
]
有一个模型网站,其HTML为:
<html>
<head>
<script language=javascript>
var test;
function makewindow() {
test=window.open('mywin');
test.window.document.write("<html><body><A onclick=window.close(); href= > click Me to Close</A>");
test.window.document.write(" ---- </body></html>");
}
</script>
</head>
<body>
<a href="" onclick="makewindow();return false;" >Click me to launch the external Window</a>
</body>
</html>
如果我点击A链接,它将运行makewindow
功能并弹出一个新窗口。
新窗口的网址为about:blank
,内容脚本未在此新窗口中加载。
如何在这个新窗口中加载内容脚本?
答案 0 :(得分:4)
更新:自Chrome 37(2014年8月26日)起,您可以将the match_about_blank
flagDoc设置为true
以触发about:blank
个页面。
请参阅下面的alib_15's answer。
适用于版本37之前的Chrome:
您无法在about:blank
页面上加载Chrome内容脚本(或用户脚本)。
这是因为about:
不是“允许的方案”之一。来自chrome extensions Match Patterns:
匹配模式本质上是一个以允许的方案(
http
,https
,file
,ftp
或{开头的网址{1}})...
在这种情况下,可能最好劫持chrome-extension
。
答案 1 :(得分:3)
在清单文件中,添加一行:
"content_scripts" : [
{
"matches" : [ "<all_urls>" ],
"match_about_blank" : true,
"js" : [ "scripts/namespace/namespace.js",
"scripts/log/Logger.js"]
"run_at" : "document_start",
"all_frames" : true
}
]