未调用的事件

Events not called

本文关键字:事件 调用      更新时间:2023-09-26
不起作用

的代码:

//Add the search textfield
var textField = document.createElement("input");
textField.setAttribute("id" , "textF")
textField.setAttribute("type", "text");
textField.setAttribute("name", "textField");
textField.addEventListener("keypress" , "keyPressedOnTextField(e)");
//textField.setAttribute("onkeypress", "keyPressedOnTextField(e)"); violates policy
document.body.appendChild(textField);
//Add the open in Skroutz Button
var btn = document.createElement("input");
btn.setAttribute("id" , "btn")
btn.setAttribute("type", "button");
btn.setAttribute("value", "Open In Skroutz.gr");
btn.setAttribute("name", "openInSrkoutz");
btn.addEventListener("click" , "openInSkroutzButton()");
//btn.setAttribute("onclick", "openInSkroutzButton()"); violates policy
document.body.appendChild(btn);
function keyPressedOnTextField(e){
    if(e.keyCode == 13){
        openInTheWindow();
        return false;
    }
}

function openInSkroutzButton(){
  console.log("test");
  var searchText = getCurrentText();
  console.log(searchText);
  if(searchText === null || searchText < 2){//make sure to replace whitespaces with +
    chrome.tabs.create({ url: "http://www.skroutz.gr/"});
  }else{
    chrome.tabs.create({ url: ("http://www.skroutz.gr/search?keyphrase=" + searchText).replace(/'s/g, "+")});
  }
}
function getCurrentText(){
    return document.getElementById("textField").value;   
}

我正在尝试通过 JS 在 Chrome 扩展程序中向文档添加一些元素。事件未被调用 - 尽管出现

单击按钮时没有调用openInSkroutzButton()

对于初学者...删除函数名称中的引号并删除括号。您希望传递对函数的引用(而不是执行它)。

此外,您不需要将事件对象显式传递给事件处理程序...它将自动通过。

改变:

textField.addEventListener("keypress" , "keyPressedOnTextField(e)");

textField.addEventListener("keypress" , keyPressedOnTextField);

btn.addEventListener("click" , "openInSkroutzButton()");

btn.addEventListener("click", openInSkroutzButton);