0

URLにパラメーターを追加したいのですが、2つのテキストボックスとボタンがあるため、どこに行き詰まっているのかわからず、URLにパラメーターを追加できません
。ここに私のコードがあります:

HTML:

Param Name: <input id="tbAddParam" type="text" /><br>
Param Value: <input id="tbAddParamValue" type="text" /><br>
<input onclick="javascript:AddParamter();" value="Add" type="button" />

JavaScript:

function AddParamter() {
    var new_url = AddUrlParameter(window.location.href, document.getElementById('tbAddParam').value, document.getElementById('tbAddParamValue').value);
    window.location.href = new_url;
}

function AddUrlParameter(a, b, c) {
    if (b.trim() == "") {
        alert("Parameter name should not be empty.");
        return a;
    }
    if (c.trim() == "") {
        alert("Parameter value should not be empty.");
        return a;
    }
    if (a.indexOf("?") == -1) {
        return a + "?" + b + "=" + c;
    }
    var d = a.split("?");
    if (d.length >= 2) {
        if (d[1].trim() == "") {
            return d[0] + "?" + b + "=" + c;
        }
        var e = d[1].split(/[&;]/g);
        for (var f = 0; f < e.length; f++) {
            var g = e[f]; var h = g.split("=");
            if (h.length >= 2) {
                if (h[0] == b) {
                    alert("Url Parameter with provided name already exists! Try Updating that Url Parameter.");
                    return a;
                }
            }
        }
        return a + "&" + b + "=" + c;
    }
}
4

4 に答える 4

1

IEは「.trim()」が好きではありません。IE8互換モードを使用してIE8でテストしましたが、トリムが原因でコードが機能しませんでした。IE9は問題ないと思いますが(Luigiの確認によると)。

代わりに次のようなものを使用してください。

strReplace=str.replace(/^\s+/,'').replace(/\s+$/,''); 

次のような方法で回避できます。

function stripWhiteSpace(arg){
   if(arg.replace(/^\s+/,'').replace(/\s+$/,'') == ""){
      return true;
   }
}

次に、それを呼び出してパラメータを渡します

if (stripWhiteSpace(b))
于 2013-02-25T06:40:35.203 に答える
1

これを IE で実行する場合 (私はこれを IE 10 でテストしました)、JavaScript を実行するためにブロックされたコンテンツを許可する必要があります。そうしないと、JavaScript の実行が許可されません。Luiggi Mendoza は、IE 9 についても同じことを提案しました。

JavaScript の実行を許可するユーザーの確認なしで、これが Chrome と FireFox で正常に機能することは注目に値します。

于 2013-02-25T06:38:16.833 に答える
1

上記のコメントから:

私はあなたのコードをテストし、私のために働いています (ページが html、jsp、または .something で終わっている場合)。これは、Chrome v25 を使用してテストされました。

その後、IE9 でテストしたところ、ローカルで実行されたページのスクリプト実行を有効にした後に機能しました。IEに入るとメッセージがポップアップします。IE9 では、下部に、Internet Explorer がこの Web ページでスクリプトまたは ActiveX コントロールの実行を制限したことを示すメッセージが表示されます。右側には、ブロックされたコンテンツを許可するオプションがあります。.

IE の下位互換性のために、 james emanon's answerd[1].trim()に記載されているように を置き換える必要があるようです。

アドバイスとして、少なくとも 2 つのブラウザーを使用して Web ページをテストしてください。はい、IE でテストすることを強くお勧めします。なぜなら、スクリプト エラーに非常に敏感であるという良い(?) フィードバックが得られるからです (Chrome と Firefox がカバーするほど多くのエラーが発生します)。

于 2013-02-25T06:45:33.157 に答える
1

@ rhughesの回答をサポートします。しかし、このコードを IE8 (私はこれを使用していましたが、コードが機能していませんでした) 以下でテストすると、HTML の trim() は機能しません。3 か所に trim() があるため、次を使用する必要があります。

if(typeof String.prototype.trim !== 'function') {
  String.prototype.trim = function() {
    return this.replace(/^\s+|\s+$/g, ''); 
  }
}

または、jQuery trim() をより簡単に使用できます

$.trim()

参照 1

参照 2

于 2013-02-25T07:25:08.327 に答える