我正在使用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=');
}
}
答案 0 :(得分:0)
好的,让我们分解一下:
我采取了以上几点并提出了这个实现:
(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());
}
});
})();
<textarea name="googleBox" id="googleBox" cols="30" rows="10"></textarea>
<button id="searchButton">Search</button>
我使用textarea
来表示聊天框,基本上在其中键入内容并让用户通过事件将其发送到某个地方。在这种情况下,我使用的是按钮,但您可以执行任何操作,例如将上述内容组合在一起以检查键盘按下的keydown
enter
事件。
然后我抓取用户输入,我使用正则表达式来获取使用正则表达式匹配的第一个单词:^([\w\-]+)
如果这是真的,如果我正确解释你的问题必须是这样,那么我使用window.open
对用户输入的内容进行谷歌搜索这个词谷歌,使用正则表达式:google(.*)
。
您可以在 JsFiddle 中随意使用它。
有任何问题吗?请在下面的评论中提问。