0

给定一个逗号分隔的 URL 字符串,我想为其转换为数组的每个元素打开一个单独的窗口,然后提交一个表单。

以下代码只打开一个窗口,并没有进行表单提交:

$.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();

当我执行以下操作时,我得到了所需的操作 - 打开了三个新选项卡/窗口,但我看起来表单提交将完成两次并且不太有意义:

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 回答