在 javascript 中替换 URL 中的两个元素

Replacing two elements in a URL in javascript

本文关键字:两个 元素 javascript 替换 URL      更新时间:2023-09-26

有点像javascript新手,所以不确定这个问题是容易还是不可能。

我正在一个具有不同测试环境的站点上工作,并制作了一个 greasemonkey 脚本来制作一组按钮以从一个切换到另一个:

if (/^(.*?)'www.mysite.com(.*)$/.test(document.location.href)) {
document.location.href = RegExp.$1+"iww1.mysite.com"+RegExp.$2
} 

这一直在工作,除了某些 URL 具有搜索字符串 ID 也需要更改为不同的数字。

&storeId=15162

我觉得我已经用尽了我有限的知识,通过在 {} 中添加另一个 if 函数来添加各种替换函数,所有这些都无济于事。

如果这是有道理的,任何人都可以提供帮助,将不胜感激。

干杯

您的第一个问题是location对象是神奇的:分配给它或其任何属性会导致浏览器导航到分配的 URL。 由于这通常会停止您的脚本,因此您不能执行两次。 相反,您应该将中间 URL 存储在其他变量中,并且仅在准备好移动到新页面后才将其重新分配给location.href

另外,您

没有指定应该如何计算新的"搜索字符串ID",所以我只是假设您有一些函数,例如 getNewStoreID() ,当您给它旧 ID 时,这将返回新 ID。 给定这样的函数,此代码应该这样做:

var siteRegExp = /www'.mysite'.com/;
var paramRegExp = /([?&]storeId)=('d+)/;
if ( siteRegExp.test( location.href ) ) {
    var href = location.href.replace( siteRegExp, "iww1.mysite.com" );
    var match = paramRegExp.exec( href );
    if ( match ) {
        href = href.replace( paramRegExp, "$1=" + getNewStoreID( match[2] ) );
    }
    location.href = href;  // navigate to the new URL!
}