【问题标题】:Userscript no longer runs on iframes, in Chrome 27在 Chrome 27 中,用户脚本不再在 iframe 上运行
【发布时间】:2013-05-22 15:03:29
【问题描述】:

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

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

  • 游戏.php
    • menu.php
    • msgframe.php
    • main.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 会根据用户点击的位置而变化,所以我必须检查每个帧以找出我在哪里,这是我更喜欢的开销避免。

谢谢

编辑:似乎与this bug有关

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-24
      • 2016-09-07
      • 2013-05-18
      相关资源
      最近更新 更多