我正在使用Chrome扩展程序,通过添加一个在文本超过30个字符时触发警报的功能来修改input元素:

inputElement.onkeyup = function () { ... some code here ... };


在对应用程序进行UI更新之前,此操作按预期进行。现在坏了。新的UI发生了表面变化,我认为是新CSS的体现。我可以更改inputElement的默认值,所以我知道我仍然可以正确点击该元素。新CSS或应用程序自己的jQuery是否会阻止我的功能正常工作?如果是这样,是否有解决方案?

更新:只是为了澄清。我的问题不是,“为什么下面的代码为什么不起作用?它是,”能否将onkeyup注入当前不具有此属性的输入表单中,而被Web应用程序的某些其他功能所破坏,例如CSS或jQuery吗?” Maximillian Laumeister建议,我尝试了addEventListener方法,此方法可行。虽然,这是万无一失的吗?有没有万无一失的解决方案?还是在应用程序的每次更新中都要进行更多的测试重新评估?

最佳答案

要注入onkeyup函数而不影响已经存在的任何onkeyup函数,应使用事件侦听器。

如果存在现有的onkeyup函数或事件侦听器,请使用addEventListener进行购买,我们只是在添加其中的内容,因此不会干扰现有的功能。

如果没有现成的onkeyup函数,它也可以工作-再次因为使用addEventListener我们没有接触任何可能存在或尚未存在的函数分配或事件监听器。



这是您可以在代码中添加事件侦听器的方法(实时演示):



document.getElementById("theinput").addEventListener("keyup", function() {
  if (this.value.length > 30) alert("Greater than 30 chars");
  document.getElementById("output").textContent = this.value.length;
});

<div>Type in the box to see character count</div>
<input id="theinput" />
<div id="output"></div>

关于javascript - CSS或jQuery可以覆盖注入(inject)的onkeyup属性吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32706329/

10-12 00:14