我目前正在构建一个简单的Google chrome扩展程序来恶作剧我的兄弟。扩展程序简单地删除了旧页面,然后将其替换为从“您没有互联网”页面上复制的HTML和CSS,从本质上讲,它使用户认为自己没有互联网。以下是注入(inject)所有新页面的内容脚本:

var hed = document.head;
var bod = document.body;
document.head.parentElement.removeChild(document.head);
document.body.parentElement.removeChild(document.body);
document.write(/*Copy of "no internet" page source here*/);

该脚本可以完美运行。我不希望更改发生的唯一页面是google chrome新标签页。通常排除页面的方法是在内容脚本下的Extensions manifest.json文件中指定它。这是我原始的manifest.json设置:
{
    "manifest_version": 2,

    "name": "No Internet Extention",
    "description": "Make people with this extention think they have no internet",
    "version": "1.0",

    "content_scripts":
    [
        {
          "matches": ["*://*/*"],
          "js": ["bup.js"]
        }
    ],

    "permissions":
    [
        "activeTab",
        "https://ajax.googleapis.com/"
    ]
}

我目前已在manifest.json文件content_scripts部分中尝试了以下设置,以排除无效的Chrome新标签页:
"matches": ["http://*/*", "https://*/*"]

我认为这将排除它,因为This page on the google product forms告诉我“新建选项卡”页面的URL是“chrome:// newtab”,它不是HTTP:或HTTPS:协议(protocol)。

我也尝试过:
"matches": ["*//*/*"]
"exclude_matches": ["chrome://newtab"]

"matches": ["*//*/*"]
"exclude_matches": ["chrome://newtab/*"]

"matches": ["*//*/*"]
"exclude_matches": ["*://newtab/*"]

"matches": ["*//*/*"]
"exclude_globs": ["chrome://newtab"]

这些都不起作用,内容脚本仍在新标签页上执行。我认为问题的根源在于我的“新标签” URL不正确。我的排除页面研究在这里完成:Google Content Scripts Page。真正的问题是:是否有人知道google新标签页的正确网址,或者如何将其排除在 list 文件中?

最佳答案

请注意,我从2016年起的原始答案中的大部分内容不再适用。

  • 从Chrome v61开始,content scripts are no longer allowed on the New Tab Page
  • 新标签页的URL已更改为chrome-search://local-ntp/local-ntp.html
  • 如果要创建自定义的“新标签页”,请使用override pages

  • 我决定删除此答案的原始内容,以免误导他人。原始答案可以在编辑历史记录中查看。

    07-26 09:00