如果一个 javascript 函数是匿名声明的,有什么方法可以覆盖它或它的一部分吗?
我试图阻止 google.com 的即时搜索劫持向上和向下箭头键以在您的搜索排名中移动。我已经确定了我认为有问题的代码部分。键码 38 和 40 用于向下和向上键。
if (b == 40) aa(f);
else if (b == 38) aa(j);
else if (b == 37 || b == 39) if (!ca(b == 39)) return f;
a.preventDefault && a.preventDefault();
return a.returnValue = j
问题是,这是一个名为 Sb = function (a) {} 的函数的一部分,该函数位于大约三千行匿名函数内。 SO 上也有类似的问题here https://stackoverflow.com/questions/1970950/how-can-i-override-an-anonymous-javascript-function-attached-to-an-eventlistener作者最终以一种不适合我的方式进行锻炼。我意识到我可以关闭即时搜索,但我喜欢它,我只是无法忍受我的箭头键不再起作用。
解决方案:
我最终写了一个镀铬扩展 https://chrome.google.com/webstore/detail/cpfjfgadpcidnjfbpmjfgdoafdeimckd将上/下箭头键功能恢复为滚动。我使用了以下代码。感谢 Raze 和 Mofle。
if (event.keyCode == 40 || event.keyCode == 38) {
event.cancelBubble = true;
event.stopPropagation();
return false;
}
您不能在另一个匿名函数中覆盖另一个匿名函数。您无法更改任何现有函数的部分,您必须创建一个新函数并将其附加到需要的位置,尽管您可以获取函数的源代码,对其进行操作并从源代码中创建一个新函数。
我在这里对这个问题有两个建议,其中不涉及重新定义函数。
- 在捕获阶段为输入文本框添加事件监听,如果keyCode为UP或DOWN则取消该事件
- 创建一个您实际输入文本的覆盖文本框,并将除向上键和向下键之外的所有事件传递到下面的实际文本框。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)