0

URLのコンマ区切りの文字列が与えられた場合、変換された配列の要素ごとに個別のウィンドウを開いてから、フォームを送信します。

次のコードは1つのウィンドウのみを開き、フォームの送信は行われません。

$.each(urlList.split(","), function (index, item) {

    urlList = "http://www.cnn.com,http://www.foxnews.com";

    _gaq.push(['_trackEvent', 'Results', 'Click', 'Classifieds+: ' + item + ' : ' + SourceUrlProviderID]);
    window.open(item, "_blank");
});
document.forms[0].submit();

次の操作を行うと、目的のアクションが表示されます。3つの新しいタブ/ウィンドウが開きますが、フォームの送信は2回行われるようで、まったく意味がありません。

urlList = "http://www.cnn.com,http://www.foxnews.com";

// opens windows for each URL in the string
$.each(urlList.split(","), function (index, item) {
    _gaq.push(['_trackEvent', 'Results', 'Click', 'Classifieds+: ' + item + ' : ' + SourceUrlProviderID]);
    document.forms[0].submit();
    window.open(item, "_blank");
});

誰かがこれに光を当てることができますか?

4

2 に答える 2

3

なぜurlList中にあるの$.eachですか?とにかく、私はこれを試し、動作します:

var urlList = "http://www.cnn.com,http://www.foxnews.com"
$.each( urlList.split( "," ), function( index, item ) {
    window.open( item, "_blank" )
});
document.forms[0].submit()
于 2013-02-01T19:36:44.643 に答える
0

ループのすぐ外(この場合はそれぞれ)でフォームを送信する必要があります。それができない場合は、それが最後の項目であるかどうかを確認してください。

if (index == urlList.split(",").length)
   document.forms[0].submit();

しかし、正直なところ、これは正しい方法のようには見えません。統計のためだけに単純なAJAX呼び出しを使用できるのに、なぜフォームを送信するのか。

于 2013-02-01T17:08:44.950 に答える