使用一个表单一次在几个不同的网站上进行相同的搜索

时间:2017-03-05 14:19:58

标签: javascript

我正在使用此表单进行搜索

<form name="formchercher" method="post" target="_blank">
Recherche : <input id="keyword" type="text" name="rechercher">  <input type="button" value="go!" onclick="return search()">
</form>

当我点击按钮时,它会调用此功能:

function search() {
    //var keyword = document.forms["myform"]["fname"].value;

    document.forms["formchercher"].action="http://www.biaugerme.com/index.php"
    document.forms["formchercher"].submit();

    document.forms["formchercher"].action="http://www.germinance.com/index.php"
    document.forms["formchercher"].submit();

    document.forms["formchercher"].action="http://www.grainesdelpais.com/"
    document.forms["formchercher"].submit();

    document.getElementById("keyword").name = "recherche";
    document.forms["formchercher"].action="http://www.magellan-bio.fr/recherche.html"
    document.forms["formchercher"].submit();

    document.getElementById("keyword").name = "q";
    document.forms["formchercher"].action="http://www.semencesdupuy.com/fr/catalogsearch/result/"
    document.forms["formchercher"].method="get";
    document.forms["formchercher"].submit();

    document.getElementById("keyword").name = "search_query";
    document.forms["formchercher"].action="http://www.semaille.com/fr/recherche"
    document.forms["formchercher"].submit();
}

我正在为每个网站更改表单的操作,然后再次提交表单。

此代码的问题在于它只打开一个标签并显示上一个网站的结果。

它适用于每个网站。如果我评论函数中的所有内容但是一个网站,它会在新标签中正确显示该网站的结果。

如何让这段代码打开6个不同的标签并从每个网站返回结果?

1 个答案:

答案 0 :(得分:2)

这里的关键是,浏览器会阻止除最后一个之外的所有提交。使用setTimeout是防止这种情况发生的一种方法,但是超时应该足够长,以便在下一次提交之前完成一次提交。否则,浏览器会阻止其余部分。在这种情况下,您可以提交例如其中的3个,但不能提交其余的。 在代码下方,我测试并打开了您在问题中列出的所有6个网站。

   <form name="formchercher" target="_blank" method="post" onsubmit="search()">
        Recherche : <input id="keyword" type="text" name="rechercher">  <input type="submit" value="go!" >
   </form>

-

function search() {
    setTimeout(function(){ 
        document.forms["formchercher"].action="http://www.biaugerme.com/index.php"
        document.forms["formchercher"].submit();
    }, 1000);

    setTimeout(function(){ 
        document.forms["formchercher"].action="http://www.germinance.com/index.php"
        document.forms["formchercher"].submit();
    }, 2000);

    setTimeout(function(){ 
        document.forms["formchercher"].action="http://www.grainesdelpais.com/"
        document.forms["formchercher"].submit();
    }, 3000);

        setTimeout(function(){ 
        document.getElementById("keyword").name = "recherche";
        document.forms["formchercher"].action="http://www.magellan-bio.fr/recherche.html"
        document.forms["formchercher"].submit();
    }, 4000);

    setTimeout(function(){ 
        document.getElementById("keyword").name = "q";
        document.forms["formchercher"].action="http://www.semencesdupuy.com/fr/catalogsearch/result/"
        document.forms["formchercher"].method="get";
        document.forms["formchercher"].submit();
    }, 5000);

    setTimeout(function(){ 
        document.getElementById("keyword").name = "search_query";
        document.forms["formchercher"].action="http://www.semaille.com/fr/recherche"
        document.forms["formchercher"].submit();
    }, 6000);
}

这篇文章中提到了另一个解决方案Submit two forms with one button(查看第二个答案)。 我相信你可以进行ajax调用,一旦成功,你可以调用下一个,依此类推。