【问题标题】:Override the Chrome new tab page with a webpage?用网页覆盖 Chrome 新标签页?
【发布时间】:2018-02-26 10:09:10
【问题描述】:

Google Chrome 扩展程序是否有一种简洁的方法可以将非本地网页设置为新标签页,同时保持多功能框清除或突出显示?

扩展清单中的 chrome_url_overrides.newtab option 只允许本地 HTML 页面。

现在,我看到两个选项:

  1. iframe 本地扩展页面中的网页。但是,许多网站在 iframe 后无法正常运行。
  2. 将本地新标签页重定向到网页。但是,这并不能可靠地突出显示多功能框,因此用户必须在键入前手动将焦点设置到多功能框,这会导致用户体验不佳。

理想的解决方案是将网页保持在新标签页的顶部框架,并且多功能框将被清除或突出显示。

附加信息:

  • 对于 Chrome 扩展程序 New Tab Redirect,有一个关于此主题 here 的持续未解决的线程。
  • 使用chrome.tabs.update 重定向新标签页历来突出显示URL。但是,这似乎没有记录且不可靠。突出显示的broke in Chrome 34 似乎是broken now in Chrome 61(我刚刚报告的一个错误)。

【问题讨论】:

  • 您可以通过 stripping X-Frame-Options 标头强制网站在 iframe 中工作 + 将内容脚本注入 iframe,通过 Object.defineProperties 欺骗 window.parentwindow.top 以指向 window
  • 我不认为window 修改会起作用。内容脚本不能“使用网页或其他内容脚本定义的变量或函数”developer.chrome.com/extensions/content_scripts
  • 当然,但是window.topwindow.parent 是只读的。如果您拥有正在构建 iframe 的网站,则此解决方案是可以的(实际上我目前正在为扩展做此操作),但它不容易推广。
  • 您确定Object.defineProperty 有效吗? top 属性是不可配置的,您可以在开发控制台中验证:Object.getOwnPropertyDescriptor(window, 'top')。 w3 规范具有“不可伪造”的属性:w3.org/TR/html5/browsers.html#the-window-object 如果您尝试Object.defineProperty(window, 'top', {get: function() { return 'foo' }}),您将看到:Cannot redefine property: top

标签: google-chrome-extension


【解决方案1】:

目前,这不太可能。我已经为 Chrome 扩展打开了一个 feature request 以更好地支持这个用例。

同时有两个选项:

  1. 在本地扩展新标签页上,为网页创建一个 iframe。

  2. 在扩展后台脚本中,监听新标签页的创建并更新网站的 URL。这看起来像:

    // background.js
    
    // Listen for new tabs.
    chrome.tabs.onCreated.addListener(function (tab) {
    
      // Only redirect if this is a blank new tab (not opened by clicking a link).
      if (tab.url === 'chrome://newtab/') {
    
        // Show your website. This might highlight the omnibox,
        // but it's not guaranteed.
        chrome.tabs.update(tab.id, {url:'https://example.com'});
      }
    });
    

    如问题中所述,这在过去突出显示了该 URL。到目前为止,URL 突出显示已损坏(Chrome 稳定版 v61)但 should be fixed in v62

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-06
    • 1970-01-01
    • 1970-01-01
    • 2019-09-04
    • 1970-01-01
    • 2013-05-15
    • 1970-01-01
    相关资源
    最近更新 更多