javascript – 未捕获的TypeError:对象#没有方法’addPanel’

我正在尝试实现几乎跨浏览器的书签功能,并在SO上找到了这个:
How do I add an “Add to Favorites” button or link on my website?

现在,我正在使用@ PHPst的答案..

<script type="text/javascript">
$(function() {
    $("#bookmarkme").click(function() {
        if (window.sidebar) { // Mozilla Firefox Bookmark
            window.sidebar.addPanel(location.href,document.title,"");
        } else if( /*@cc_on!@*/false) { // IE Favorite
            window.external.AddFavorite(location.href,document.title); 
        } else if(window.opera && window.print) { // Opera Hotlist
            this.title=document.title;
            return true;
        } else { // webkit - safari/chrome
            alert('Press ' + (navigator.userAgent.toLowerCase().indexOf('mac') != - 1 ? 'Command/Cmd' : 'CTRL') + ' + D to bookmark this page.');
        }
    });
});
</script>

它适用于普通网页..如下所示:
http://jsfiddle.net/GXas4/

但是当我在wordpress模板中使用它时,在chrome中我得到一个像这样的js错误

Uncaught TypeError: Object #<HTMLdivelement> has no method 'addPanel' 

它不会在Firefox的控制台上返回错误,但也没有做任何事情.

SO上的很多帖子都有这样的问题(‘未捕获的TypeError:对象#没有方法’),但似乎没有任何东西能指向正确的方向.

有谁知道为什么会这样?

解决方法:

您使用的wordpress主题可能有一个id = sidebar的元素.

除非明确定义了具有相同名称全局变量,否则将为具有id的每个元素创建一个全局变量.

所以,第一次测试是不可靠的.例如,即使在Chrome中,评估stackoverflow页面上的window.sidebar也是如此,因为网站使用具有此ID的元素.

相关文章

我们有时候在定制WORDPRESS主题的时候,由于菜单样式的要求我...
很多朋友在做wordpree主题制作的时候会经常遇到一个问题,那...
wordpress后台的模块很多,但并不是每个都经常用到。介绍几段...
从WordPress4.2版本开始,如果我们在MYSQL5.1版本数据中导出...
很多网友会遇到这样一个问题,就是WordPress网站上传图片、附...
对于经常要在文章中出现代码的IT相关博客,安装一个代码高亮...