Some Notes

Be HardWorking Every Day.

更改 Edge 新标签页 —— 简单浏览器扩展

这是记录写简单的一个 Chomium 扩展的一篇文章。
主要是用扩展覆盖默认标签页,随后 HTML 引用 JS 进行(模拟)重定向到 chrome-search://local-ntp/local-ntp.html。

开始

浏览器扩展都需要 manifest.json 文件。先新建一个文件夹,在里面添加了这个文件。

由于需要覆盖新标签页,需要 chrome_url_overrides.newtab 属性。它可以覆盖新的标签页,指定为扩展(文件夹)内的 HTML 文件(不能使用第三方 URL)。
随后还需要增加必要的值:nameversionmanifest_version。它们分别对应扩展显示的名字,显示的版本和 manifest 的版本,manifest 的版本填 3 就可以了。

最终,manifest.json 是这样的:

{
    "name": "Change Newtab",
    "description": "自己(JoyWonderful)弄的一个重定向新标签页的东西啦。",
    "version": "0.1",
    "manifest_version": 3,
    "chrome_url_overrides": {
        "newtab": "chntp.html"
    }
}

重定向

随后,开始写 chntp.html 的内容。由于需要(模拟)重定向,还需要再写一个 JavaScript 文件,命名为 chp.js。
由于想重定向到的 chrome-search://local-ntp/local-ntp.html 是本地文件,不可以直接将 window.location.href 直接更改为它,只能使用扩展的 API chrome.tabs.create 新建一个指向它的标签页。随后用 window.close() 关闭自身标签页。

chp.js 的代码是这样的:

chrome.tabs.create({url:"chrome-search://local-ntp/local-ntp.html"});
window.opener = null;
window.close();

chntp.html 是这样的:

<html lang="en">
    <head>
        <title>Changing page...</title>
        <meta charset="utf-8">
    </head>
    <body>
        <script src="chp.js"></script>
    </body>
</html>

导入这个扩展到浏览器

Edge 是这样的,Chrome 也基本一样。
进入到浏览器扩展界面,打开“开发人员模式”,点击“加载解压缩的扩展”,选择一开始新建的扩展文件夹就可以了。

如果没问题,新建标签页会跳到 chrome-search://local-ntp/local-ntp.html。(标签页会闪一下)

后面的废话

自己写一个简单扩展的原因是 Edge 默认的新标签页太离谱了些,默认是这样(很好奇微软中国怎么也搞什么传奇“开局领礼包”的广告了)。这时打开 DevTools,可以发现 window.location.href 指向 https://ntp.msn.cn/edge/ntp。即使可以设置把那一大堆花里胡哨的东西关掉,但它还是要加载第三方资源,存奇怪的缓存和其他东西用了 十几 MiB
Edge 在断网的时候其实有个干净的标签页,实际是 chrome-search://local-ntp/local-ntp.html,所以就想用这个新标签页。

随后,我准备把新标签页换掉。欣喜地发现设置改不了新标签页。研究了半天发现浏览器扩展可以改新标签页,随后又进行很多奇奇怪怪的试错才成功运行的。

因为想搞贡献点,把它传到了个人仓库里。那个扩展名为 crx 的是打包后的扩展,可以删。

原本这篇文章想上周发的,但因颓废,搁了。。。


图片们:
edgentp
ntpstroage
localntp