我有一个chrome扩展程序,其中包含一个已打包的用户脚本,以便Chrome用户不必费心使用Tampermonkey.
脚本运行的页面包含多个框架,例如,如果导航到site / game.php,页面由3个框架组成,如下所示:
> game.php
> menu.php
> msgframe.php
> main.php
在Firefox中,以前在Chrome中我可以将“main.php”添加到include globs中,每当我在顶级加载game.php时,我的脚本就会在该帧上运行.但是,在最新版本(Chrome 27.0.1453.93 m)中,我只能在顶级“game.php”上运行脚本.浏览器甚至不打算尝试在任何帧上运行.我怀疑这是删除“unsafeWindow” hack的同一组安全增强功能的一部分.
有没有办法强制Chrome实际上再次关注清单中的include_globs,或者我是否真的需要更改脚本以便我在game.php中浪费时间检查所有帧并查看哪一个是我想要的那个继续?
game.php并不总是有相同的框架,网址会根据用户点击的位置而变化,因此我必须检查每个网址以找出我的位置,这是我宁愿避免的开销.
谢谢
编辑:似乎与this bug有关
最佳答案 将content_scripts下的“all_frames”设置为true,显然现在在扩展清单中默认为false.
{
"manifest_version": 2,
"icons": { "48": "logo48.png", "128": "logo128.png" },
"name": "My Script",
"description": "I do stuff.",
"converted_from_user_script": true,
"version": "1.0",
"content_scripts": [ {
"all_frames" : true,
"exclude_globs": [ ],
"exclude_matches": [ ],
"include_globs": [ "http*://*.example.com/main.php*" ],
"js": [ "my_script_name.user.js" ],
"matches": [ "http://*.example.com/*", "https://*.example.com/*" ],
"run_at": "document_end"
} ]
}