一个WordPress插件或以前的程序员编写的代码与WordPress管理栏冲突,导致它始终可见。如果您是管理员,则不会出现任何错误,但是,如果您是访问者,则会看到控制台错误。
我想做的是,每当您在控制台中看到此错误时,请隐藏管理栏。由于通常访客不会看到管理栏,因此我正在尝试快速破解。
错误如下
Uncaught TypeError: Cannot read property 'addEventListener' of null
这是我尝试过的方法,经过一些研究,我从here中学到了这一技巧:
jQuery(document).ready(function($) {
var original = window.console
window.console = {
error: function() {
//Gets text from error message.
errorText = arguments['0'];
if (errorText.includes('TypeError')) {
jQuery("#wpadminbar").css("display", "none");
}
original.error.apply(original, arguments)
}
}
});
我知道我将JavaScript和jQuery混合使用-稍后将解决此问题,但我只是想检查一下这种破解是否可行。它不起作用,甚至没有执行该功能,还有其他方法可以检查控制台错误吗?
答案 0 :(得分:2)
问题已解决,由于所有人都正确地坚持我不应该使用JS,所以我开始研究他的代码,发现他离开了functions.php
show_admin_bar(true);
我将其删除,问题已解决:)
答案 1 :(得分:0)
这可行,并且daniel提到的onerror
也可行,我之所以选择jQuery是因为从理论上讲,它提供了更广泛的浏览器兼容性,如果我错了,请纠正我。该解决方案与控制台无关,这很棒。
jQuery(document).ready(function( $ ){
window.addEventListener('error', function(e) {
if (e.error.name == 'TypeError'){
jQuery("#wpadminbar").css("display", "none");
}
});
});
但是我不喜欢那样。作者很少,访客太多,因此,我默认将其隐藏,否则以其他方式显示,因为访客站立一秒钟后将看到该条,然后会发生错误并且该条将消失。
我希望默认情况下不显示错误,然后如果没有错误,这意味着如果事件处理程序没有触发,那么我想显示该栏。但是我不知道该怎么做,如果不使用偶数监听器,我也不知道该怎么做。