【问题标题】:Unable to open javascript search engine results on a new window无法在新窗口中打开 javascript 搜索引擎结果
【发布时间】:2016-03-15 21:01:03
【问题描述】:

我正在使用来自 script page 的 javascript 搜索引擎,它允许我选择不同的提供商/搜索引擎来执行类似 google 的搜索,但我试图在按下发送按钮,没有成功。

我已经尝试过使用:

target="_blank"

<input type="button" value="Send" onClick="startSearch()" target="_blank"> 中没有任何反应,或者:

<form name="searchForm" target="_blank">

什么都没有!

我也尝试使用 _new 代替 _blank,但也没有用。

最后,我测试了w3schools.com example 上的建议,但不幸的是又失败了。

你们能帮帮我吗?谢谢!

【问题讨论】:

  • 您没有提交表单。您没有关注链接。除非 JavaScript 使用 target 属性,否则它不会做任何事情。
  • 嗯,那个脚本页面已经过时了——它仍然显示 Altavista 并且缺少 Google、DuckDuckGo 和 Bing。许多这些搜索引擎将不再工作。忘记它 - 为您的用户提供一个很好的搜索。
  • Johannes Jander,脚本按原样运行 =) 我只是希望它在新窗口中打开。
  • Quentin,如果我在 searchString 或脚本的函数部分的某处更改/添加一些东西怎么办?谢谢

标签: javascript html forms search


【解决方案1】:

如果你想通过你的按钮打开一个新的标签链接,试试这个-

<a href="http://www.stackoverflow.com/" target="_blank">
    <input type="button" value="Send" />
</a>

【讨论】:

  • 谢谢,在您提供的示例中有效,但不适用于我提供的示例 =)
  • 你想要什么?你想通过按钮的onclick事件来实现吗?
  • onclick按钮已经有了功能,我可以复制它而不引起冲突吗?
【解决方案2】:

又快又脏,你可以使用window.open();方法在新窗口中打开搜索,这里是一些更新的HTML:

<form method="GET" action="#" id="search-form">
    <p><label>Search for: <input type="text" id="q" /></label></p>
    <p><label>Search from: <select id="engine">
        <option selected="selected" value="http://www.google.com/search?q=">Google</option>
        <option value="http://www.bing.com/search?q=">Bing</option>
        <option value="http://search.yahoo.com/search?p=">Yahoo!</option>
        <option value="http://search.aol.com/aol/search?q=">AOL</option>
    </select></label></p>
    <p><input type="button" value="Send" id="send" /></p>
</form>

还有 JavaScript:

<script>
    var ID = function(str){return(document.getElementById(str));};
    ID('send').addEventListener('click', function(){
        var search = ID('q').value, select = ID('engine'), engine = select.options[select.selectedIndex].value;
        if(!search) {
            alert('Please include a search string');
        } else {
            window.open(engine + search);
        }
    });
</script>

只需确保在页面末尾调用它或将其放入 DOMContentLoaded 事件或其他东西中。

MDN Docs on window.open()

【讨论】:

  • Faino,即使不是通过解码我的初始脚本,我已将您的答案用作解决问题的方法。但是,它对我来说很好。非常感谢!
  • 我是否需要做任何其他事情才能将其作为最佳答案关闭?
【解决方案3】:

要在新窗口中打开链接,因为您使用的是 &lt;form&gt; 而不是 &lt;a&gt; 链接,所以您必须更改示例中显示的 javascript,首先在表单中添加一个 ID,这样很容易通过 DOM 访问:

<form id="searchForm" name="searchForm" target="blank">

然后,更改最后的 javascript 行,而不是 location.href,而是更改表单的操作并提交:

document.getElementById("searchForm").action = finalSearchString;
document.getElementById("searchForm").submit();

例子:

https://jsfiddle.net/vj99ux9e/

【讨论】:

    猜你喜欢
    • 2011-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-02
    • 2011-12-09
    • 1970-01-01
    • 1970-01-01
    • 2014-01-29
    相关资源
    最近更新 更多