1

限られた情報でこれ以上の情報を提供できない場合は、質問を削除します。

そのため、スクリプトに依存する一種の検索エンジンを生成するスクリプト (動的に生成される) がありますが、これは非常に複雑であり、影響はありません。

適用 (検索) ボタンをクリックすると、検索プロセスがトリガーされ、いくつかのパラメーターを持つ新しい URL で結果を確認できます。

E. g.: http://www..example.com/...&ThisParameter=XYZ&SecondParameter=foo&ThirdParameter=bar

私の質問は -"ThisParameter=XYZ"他のものに変更することは可能ですか"ThisParameter=Something"?

問題は、URL がどのように構築されているのか、影響を与えることができないのかがわからないことです。そのため、生成された URL を取得して、言及されているこの部分を変更するだけのコードが必要になります。

早速のご意見ありがとうございます!

編集

生成された URL に影響を与えるスクリプトの部分を見つけました。DOM で変更すると、目的のページにリダイレクトされます。

var options = {"FOO":123,"BAR":"ABC","ThisParameter":"STH","EXAMPLE":123, ...}

そして、これは「コピーパス」を選択したときの出力です:

_options[0].ThisParameter
4

4 に答える 4

1

ページをリロードせずにURLを変更することはできませんが、以下の方法で調整できます。現在のページのURLを取得します(ソースは説明が不明です)。参照するURLがリンクのhrefにある場合、このコードは簡単に変更できます

/* get current url info using location object*/
var baseUrl = location.href.split('?')[0];
/* array of search strings */
var searchParams = location.search.slice(1).split('&');
var searchKeyToChange = 'ThisParameter';
var newVal = 'someNewValue';

var doPageReload = false;
/* loop over search strings, modify appropriate one*/
for (i = 0; i < searchParams.length; i++) {
    var params = searchParams[i].split('=');
    if (params[0] == searchKeyToChange) {
        if (params[1] != newVal) {
            searchParams[i] == searchKeyToChange + '=' + newVal;
            doPageReload = true;
        }
    }
} /* load adjusted url if new value not already set*/
if (doPageReload) {
    location = baseUrl + '?' + searchParams.join('&');
}
于 2012-10-22T12:37:13.843 に答える
1

クエリ パラメータのシーケンスが常に同じ場合:

var url = window.location.href;
var lst_temp = url.split('?');
var $lst_parts = lst_temp[1].split('&');

var new_val = 'blabla';
var position = 'x';
lst_parts[x] = 'ThisParameter=' + new_val;

var url_new = lst_temp[0] + '?';
url_new += lst_parts.join('&');

編集:
クエリ キーの順序が事前にわからない場合は、次のようにします。

ここからこの機能を使用してください: https://stackoverflow.com/a/111545/888177

function EncodeQueryData(arr_data) {
   var ret = [];
   for (var d in arr_data)
      ret.push(encodeURIComponent(d) + "=" + encodeURIComponent(arr_data[d]));
   return ret.join("&");
}

次に、URL を読み取り、次のように分割します。

var url = window.location.href;
var key = "ThisParameter";
var new_val = 'blabla';
var lst_temp = url.split('?');
var lst_parts = lst_temp[1].split('&');   

このループを追加して、クエリ パラメータと値を含む連想配列を作成します。

var arr_data = new Array();
for (var index in lst_parts) {
   lst = lst_parts[index].split('=');
   arr_data[lst[0]] = lst[1];
}

無限の更新を避けるには:

var val = arr_data[key];
if (val != new_val) {
  arr_data[key] = new_val;
  var  new_url = lst_temp[0] + '?' + EncodeQueryData(arr_data);
  window.location.href = new_url;
}
于 2012-10-22T12:22:28.423 に答える
0

パラメータ値のペアの配列を取得するには、単純に正規表現で置換するか、?then で分割することができます。&

于 2012-10-22T12:18:12.563 に答える
0

JavaScript を使用してブラウザーの URL を動的に変更する方法について質問がある場合は、(セキュリティ上の理由から) 不可能です。を使用して URL を変更してページをリクエストする必要がある場合は、前のコメントの方法を使用できます。

于 2012-10-22T12:34:36.053 に答える