如何根据用户输入打开Goog​​le搜索

时间:2016-03-03 16:18:43

标签: javascript

我正在使用JavaScript构建chatbot,现在我希望它能够用于谷歌。

我想要做的是键入任何内容,然后该功能将window.open添加到Google页面。例如,如果我输入google cars,则会打开一个包含汽车链接的页面:https://www.google.com/search?q=cars

可以用JavaScript完成吗?

这是我到目前为止所做的:

function takeInput(e) {

    // enter === 13

    if(e.which != 13) {
        return false;
    }

    var question = this.value;

    appendOutput("<p><b>HUMAN : </b>" + question + "</p>", output);
    appendOutput("<p><b>CHATBOT : </b>" + processInput(question) + "</p>", output);
    appendOutput('<hr/>', output);

    this.focus();
    this.select();

    output.scrollByLines(100);
}

function processInput(question) {
    var answer = "I cannot answer this question";

    if (question.toUpperCase() == "GOOGLE ") {
        answer = "Here is what I found on Google:";
        window.open('https://www.google.com/search?q=');
    }
}

1 个答案:

答案 0 :(得分:0)

好的,让我们分解一下:

  1. 您想构建一个聊天框,它接受用户的输入。
  2. 在问题出现之前使用Google时,聊天框会进行Google搜索,例如google [问题陈述]。
  3. 然后,在触发某些事件(例如按钮点击,输入密钥或其他任何内容)后,它将打开一个新窗口并根据[问题陈述]进行Google搜索。
  4. 我采取了以上几点并提出了这个实现:

    的JavaScript

    (function(){
        var googleBox = document.getElementById("googleBox"),
            searchButton = document.getElementById("searchButton");
    
      searchButton.addEventListener("click", function(){
        var userInput = googleBox.value,
            regex_google = new RegExp('google(.*)');
    
        if(userInput.match(/^([\w\-]+)/)[1].toLowerCase() === "google"){ // matches the first word in the string, which should be 'google'
    
          window.open('https://www.google.com/search?q=' + userInput.match(regex_google)[1].trim());
        }
      });
    })();
    

    HTML

    <textarea name="googleBox" id="googleBox" cols="30" rows="10"></textarea>
    <button id="searchButton">Search</button>
    

    我使用textarea来表示聊天框,基本上在其中键入内容并让用户通过事件将其发送到某个地方。在这种情况下,我使用的是按钮,但您可以执行任何操作,例如将上述内容组合在一起以检查键盘按下的keydown enter事件。

    然后我抓取用户输入,我使用正则表达式来获取使用正则表达式匹配的第一个单词:^([\w\-]+)

    如果这是真的,如果我正确解释你的问题必须是这样,那么我使用window.open对用户输入的内容进行谷歌搜索这个词谷歌,使用正则表达式:google(.*)

    您可以在 JsFiddle 中随意使用它。

    有任何问题吗?请在下面的评论中提问。