用户脚本替换部分网址

时间:2018-08-14 11:39:02

标签: url replace userscripts

我正在寻找一种用户脚本,如果在其中找到某些值,它将替换URL的一部分。下面的代码似乎可以正常工作并替换URL,但是问题在于,更改URL后,它会继续重新加载/刷新页面。我是新手,我做错了什么?

// @include      http://*
// @include      https://*
// @run-at       document-start
// ==/UserScript==

var url = window.location.href;

if (url.search("images.abc.com") >= 0) {
    url = url.replace('300','620');
    window.location = url;
}

1 个答案:

答案 0 :(得分:3)

您正在使用window.location=url来更改Windows的位置,并刷新页面。您可以执行类似的操作来更新URL,而无需重新加载页面。

仅更改哈希之后的内容-旧的浏览器

document.location.hash = 'lookAtMeNow';  

更改完整的URL。 Chrome,Firefox,IE10 +

history.pushState('data to be passed', 'Title of the page', '/test');  

上面的操作将在历史记录中添加一个新条目,因此您可以按“后退”按钮进入以前的状态。要更改URL而不在历史记录中添加新条目,请使用

history.replaceState('data to be passed', 'Title of the page', '/test');

完整解决方案

var url = window.location.href;

if (url.search("images.abc.com") >= 0) {
    url = url.replace('300','620');
    /*window.location = url;*/
    history.pushState('data if any', 'Title of the page if any', url);
    history.replaceState('data if any', 'Title of the page if any', url);
}