一个javascript新手,所以不确定这个问题是否容易或不可能。
我正在一个拥有不同测试环境的网站上工作,并制作了一个关键字脚本来制作一组按钮,以便从一个按钮切换到另一个按钮:
if (/^(.*?)\www.mysite.com(.*)$/.test(document.location.href)) {
document.location.href = RegExp.$1+"iww1.mysite.com"+RegExp.$2
}
除了某些网址的搜索字符串ID也需要更改为其他数字外,这一直有效。
&storeId=15162
我觉得我已经用尽了有限的知识,在{}中增加了另外一个if功能来添加各种替换功能,但都无济于事。
如果这是有道理的,任何人都可以提供帮助,我们将不胜感激。
干杯
答案 0 :(得分:0)
你的第一个问题是location
object是神奇的:分配给它或它的任何属性会导致浏览器导航到指定的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!
}