在Chrome 27中,用户脚本不再在iframe上运行

时间:2013-05-22 15:03:29

标签: google-chrome iframe google-chrome-extension userscripts

我有一个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

相关

1 个答案:

答案 0 :(得分:2)

将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"
 } ]
}