首页 > 解决方案 > JS中的就地重定向

问题描述

我正在编写一个 Chrome 扩展程序以在某个域上无缝注入 URL 参数。

例如,当您访问 时search.com/?q=query,它应该将您重定向到search.com/q=query&new_param=1

以下后台脚本工作正常:

chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {
  var url = changeInfo.url;
  if (
    url &&
    url.startsWith("https://search.com/?") &&
    !url.includes('&new_param=')
  ) {
    chrome.tabs.update(tabId, {url: newUrl});
  }
});

但是这个重定向在导航历史中创建了 2 个条目:有和没有新参数。

这很糟糕,因为回到历史 - 没有参数的页面 - 再次触发重定向。除非您手动跳回历史记录中的 2 页,否则您会被卡住。

如何保持Back按钮 UX 与没有扩展的相同?

标签: javascriptgoogle-chrome-extensionurl-parametershtml5-history

解决方案


https://developer.chrome.com/extensions/history

Javascript 也有 window.history.replaceState,但我不确定它是否适用于 chrome 扩展沙箱。


推荐阅读