google-chrome – 在Chrome 27中,用户脚本不再在iframe上运行

我有一个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"
 } ]
}
点赞