0

javascript初心者のビットなので、この質問が簡単か不可能かはわかりません。

さまざまなテスト環境のサイトで作業しており、1つから別のボタンに切り替えるための一連のボタンを作成するためのgreasemonkeyスクリプトを作成しました。

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

これは機能していますが、一部のURLには検索文字列IDがあり、これも別の番号に変更する必要があります。

&storeId=15162

{}内に別のif関数を追加して、さまざまな置換関数を追加することで、限られた知識を使い果たしたように感じますが、まったく役に立ちません。

これが理にかなっていて、誰もがそれを助けることができるならば、それは大いにありがたいです。

乾杯

4

1 に答える 1

0

最初の問題は、locationオブジェクトが魔法のようなものであるということです。オブジェクトまたはそのプロパティのいずれかに割り当てると、ブラウザは割り当てられたURLに移動します。これにより通常スクリプトが停止するため、2回実行することはできません。代わりに、中間URLを他の変数に格納location.hrefし、新しいページに移動する準備ができたら、そのURLを割り当てる必要があります。

また、新しい「検索文字列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!
}
于 2012-06-29T09:51:25.793 に答える