2

ほぼクロスブラウザーのブックマーク機能を実装しようとしていますが、SO でこれを見つけました: Web サイトに「お気に入りに追加」ボタンまたはリンクを追加するにはどうすればよいですか?

今、私は@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>

ここに示すように、プレーンなWebページで動作します.. http://jsfiddle.net/GXas4/

しかし、WordPressテンプレート内で使用すると、クロムで次のようなjsエラーが発生します:

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

firefox のコンソールにエラーは返されませんが、何もしません。

SOに関する多くの投稿には、次のような質問があります(「Uncaught TypeError: Object # has no method」)が、正しい方向に私を指しているようには見えません。

なぜこれが起こっているのか誰にも分かりますか?

4

3 に答える 3

1

使用している WordPress テーマに id=sidebar の要素が含まれている可能性があります。

同じ名前のグローバル変数が明示的に定義されていない限り、id を持つ要素ごとにグローバル変数が作成されます。

したがって、最初のテストは信頼できません。たとえばwindow.sidebar、stackoverflow ページでの評価は、Web サイトがそのような ID を持つ要素を使用するため、Chrome でも true になります。

于 2013-07-19T13:53:24.437 に答える
0

addPanel は v. 23 以降、Firefox から削除されました。ただし、代わりにマークアップを使用できます。

<a href="http://stackoverflow.com" title="Stack Overflow" rel="sidebar">Bookmark me</a>
于 2016-04-10T20:51:09.563 に答える