我正在尝试实现几乎跨浏览器的书签功能,并在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:对象#没有方法'),但似乎没有任何东西指向正确的方向。
有谁知道为什么会这样?
答案 0 :(得分:1)
您正在使用的WordPress主题可能包含id = sidebar的元素。
除非明确定义了具有相同名称的全局变量,否则将为每个具有id的元素创建一个全局变量。
所以,第一次测试是不可靠的。例如,即使在Chrome中,评估stackoverflow页面上的window.sidebar
也是如此,因为该网站使用具有此ID的元素。
答案 1 :(得分:0)
您应该使用wp_enqueue_script
(Documentation)
在该脚本之前可能未调用您的依赖项。如果您将脚本排入队列,则可以使用
首先加载依赖项wp_enqueue_script( $handle, $path to file, array( jquery ));`
由于我将jQuery放在数组中,它现在将在脚本之前加载jQuery。
答案 2 :(得分:0)
自第23版以来,已从Firefox中删除了addPanel。但您可以改为使用标记:
<a href="http://stackoverflow.com" title="Stack Overflow" rel="sidebar">Bookmark me</a>