javascript - 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 与没有扩展的相同?
解决方案
https://developer.chrome.com/extensions/history
Javascript 也有 window.history.replaceState,但我不确定它是否适用于 chrome 扩展沙箱。
推荐阅读
- ios - 可以同时使用来自多个线程的 Data 对象吗?
- amazon-ec2 - 是否可以基于 CPUReservation 对该自动缩放组中的实例进行自动缩放组缩放
- laravel - 生成带有用户名字和姓氏首字母的文本的图像
- javascript - 集群中的 Cassandra - 1 秒内 1000 次查询 [1000 毫秒]
- python - 使用 tmux+vim 发送测试代码行的键绑定?
- yii2 - yii2基本和yii迁移错误中没有index.php文件
- python-2.7 - 我是编码新手,正在学习列表中的替换功能,我需要更深入的了解
- haskell - IO 是否应该在传播期间内联运行?
- reactjs - 如何从特定的表单控件中删除验证 css?
- ssl - gRPC 是否在 TLS 握手期间检查 CRL/OSCP 响应程序?