谷歌浏览器插件chrome_url_overrides设置后,提示地址被更改

如果我在制作一款谷歌浏览器插件的时候,在chrome_url_overrides中设置了新的页面,比如

"chrome_url_overrides" : {
    "newtab" : "static/HTML/ntab.html"
  }

我要怎么做到让浏览器不提示地址被更改

chrome.tabs.onCreated判断下tab是否新建标签页,是的话update下网址

  • manifest.json
{
  "manifest_version": 3,
  "name": "demo",
  "version": "1.0.0",
  "description": "修改Chrome新建标签页默认打开网址",
  "permissions": [ "tabs" ],
  "background": {
    "service_worker": "background.js"
  }
}
  • background.js
chrome.tabs.onCreated.addListener(function (tab) {
    if (tab.title =='新标签页')
    chrome.tabs.update(tab.id, { url: 'static/HTML/ntab.html' });
});

是我的话,会使用:chrome.tabs.update({url: "my_plugin/static/HTML/ntab.html"});

要让浏览器不提示地址被更改,你需要在你的插件的manifest.json文件中添加permissions属性,并在其中添加chrome://newtab/ URL。具体步骤如下:

在你的插件的manifest.json文件中,找到permissions属性,如果没有就添加它。

在permissions属性中添加chrome://newtab/ URL,如下所示:

"permissions": [
"chrome://newtab/"
],

保存manifest.json文件。

这样,当你的插件打开一个新标签页时,浏览器不会提示地址被更改了。

引用chatGPT作答,当您使用chrome_url_overrides更改Chrome浏览器的默认页面时,浏览器会自动显示地址栏中的新URL。这是浏览器的默认行为,无法更改。

但是,您可以通过使用Chrome API创建一个无地址栏的全屏窗口来解决这个问题。下面是一个示例代码:

chrome.windows.create({
    url: 'static/HTML/ntab.html',
    type: 'popup',
    focused: true,
    width: screen.availWidth,
    height: screen.availHeight
});

在这个示例中,我们使用了chrome.windows.create方法创建了一个新的浏览器窗口,并且使用type属性设置为"popup"来隐藏地址栏。另外,我们设置窗口的宽度和高度为屏幕的可用宽度和高度,这样就可以占据整个屏幕,看起来就像是全屏窗口一样。

您可以将上述代码添加到您的插件中,以在浏览器启动时打开一个无地址栏的全屏窗口,而不会显示地址栏更改提示。

该回答引用ChatGPT
谷歌浏览器插件chrome_url_overrides设置后,会改变浏览器默认的地址,因此会提示地址被更改。不过,可以在manifest.json文件中添加permissions里的"tabs"权限,然后在background.js或者content_script.js文件中进行更改。具体代码如下:

manifest.json


{
"name": "My Extension",
"version": "1.0",
"manifest_version": 2,
"permissions": [
"tabs"
],
"chrome_url_overrides": {
"newtab": "static/HTML/ntab.html"
},
"background": {
"scripts": ["background.js"]
}
}


background.js (建议使用background.js进行更改)


chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {
if (changeInfo.status == 'loading') {
chrome.tabs.executeScript(tabId, {file: 'content_script.js'});
}
});


content_script.js


if (document.location.href == chrome.extension.getURL('static/HTML/ntab.html')) {
window.history.pushState(null, null, '/');
}


以上代码实现的功能是,在新标签页打开时,将地址改为插件的页面地址,然后在content_script.js文件中利用window.history.pushState将地址改回原先的默认地址。这样就不会提示地址被更改了。您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632