4

我有一个 chrome 扩展,其中包含一个已打包的用户脚本,因此 Chrome 用户不必为 Tampermonkey 烦恼。

运行脚本的页面由多个框架组成,例如,如果您导航到 site/game.php,该页面由 3 个框架组成,如下所示:

  • 游戏.php
    • 菜单.php
    • msgframe.php
    • 主文件

在 Firefox 和之前的 Chrome 中,我可以将“main.php”添加到包含 glob,每当我在顶层加载 game.php 时,我的脚本就会在该框架上运行。但是,在最新版本(Chrome 27.0.1453.93 m)中,我只能在顶层“game.php”上运行脚本。浏览器甚至不会费心尝试在任何帧上运行。我怀疑这是删除“unsafeWindow”hack的同一组安全增强功能的一部分。

有没有办法强制 Chrome 再次真正关注清单中的 include_globs,或者我真的必须更改脚本以便我在 game.php 中浪费时间检查所有帧并查看哪一个是我想要的继续运行?

game.php 并不总是有相同的帧,url 会根据用户点击的位置而变化,所以我必须检查每个帧以找出我在哪里,这是我希望避免的开销。

谢谢

编辑:似乎与此错误有关

4

1 回答 1

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"
 } ]
}
于 2013-05-23T07:56:47.633 回答