Javascript JS中的就地重定向
我正在编写一个Chrome扩展,以便在某个域上无缝地插入URL参数 例如,当您访问Javascript JS中的就地重定向,javascript,google-chrome-extension,url-parameters,html5-history,Javascript,Google Chrome Extension,Url Parameters,Html5 History,我正在编写一个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.start
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页,否则你就会陷入困境
如何使返回
按钮与没有扩展名时保持相同?
Javascript也有window.history.replaceState,但我不确定它是否在chrome扩展沙盒中起作用。使用chrome.webRequest API,如果需要,请参阅和google提供更多示例。感谢您的建议。现在好多了,唯一有效的部分就是我手动点击页面上的某个链接。我需要刷新页面或手动将其放入地址栏-然后它注入参数。这正常吗?看起来,
onBeforeRedirect
不能用于注入参数,而onBeforeRequest只对新打开的URL做出反应-重新加载或手动键入。有什么解决方法吗?正确的事件是onBeforeRequest,没有您描述的限制,或者我不理解问题所在。对我来说,onBeforeRequest
无法捕获最简单的重定向-单击页面上的链接。比如说,有一个链接指向https://search.com
。当我点击它时,https://search.com
将被打开。当我重新加载页面时,它会变为https://search.com/?new_param=1
。很不幸,这个脚本在我的情况下不起作用<代码>历史记录不指向选项卡的历史记录,而是指向运行扩展脚本的通用\u生成的\u后台\u页面
的历史记录。有没有一种方法可以访问某个选项卡的历史记录?如果这不起作用,那很难看,但我知道的唯一其他可能性是使用普通的window.history功能,比如“chrome.tabs.getSelected”(null,function(tab){var jsCode=“alert('history code')”;chrome.tabs.executeScript(tab.id,{code:jsCode},函数(响应){…};});'