4

これをOperaで機能させる方法は?Opera用のこのコードを見つけましたが、うまくいきません。

 function AddToFavorites(title, url) {

    if (window.sidebar) { // Mozilla Firefox Bookmark
        window.sidebar.addPanel(title, url,"");
        return false;
    } 
    else if( window.external ) { // IE Favorite
        window.external.AddFavorite( url, title); 
        return false;
    }
    else if(window.opera && window.print) { // Opera Hotlist
                var elem = document.createElement('a');
                elem.setAttribute('href',url);
                elem.setAttribute('title',title);
                elem.setAttribute('rel','sidebar');
                elem.click();
                return false;
    }
 }

Dragonflyエラーコンソールはサイレントで、エラーは発生していません。

4

4 に答える 4

6

あなたがそれを主張するなら、動的に生成された冗長リンクなしでそれをしてください:

 <a href="http://real.url.example.com" title="Bookmark me, pleaeease!" 
    rel="sidebar"
    onclick="return !addToFav(this.href,this.title)">

でも、やらないでください。

Opera ユーザーとして、私はその流行を推し進めていないことに感謝しています。必要に応じて、タブをブックマーク バー/パネル/スピードダイヤルに簡単にドラッグ アンド ドロップできます。

于 2008-12-18T23:13:42.573 に答える
3

Operaでは、ブックマークを許可するために同じユーザー イベント要件が適用されます。そのため、作成したばかりのリンクをユーザーがクリックしたことがないため、このコードは機能しません。

次のようなものが必要です。

function AddToFavorites(obj, title, url){
  if(window.sidebar){
    // Mozilla Firefox Bookmark
    window.sidebar.addPanel(title, url,"");
    return false;
  } else if(window.external){
    // IE Favorite
    window.external.AddFavorite( url, title);
    return false;
  } else if(window.opera && window.print){
    //Opera Hotlist
    obj.setAttribute('href',url);
    obj.setAttribute('title',title);
    obj.setAttribute('rel','sidebar');
    obj.click();
    return false;
  }
}

で呼び出す

<a href="#" onclick="AddToFavorites(this, 'your title', 'your url');">Bookmark This Page</a>

(もっと目立たないようにしてください。ユーザーイベントの要件を示したかっただけです)

于 2008-12-17T20:00:22.633 に答える
1

Opera 10 で「お気に入りに追加」リンクを機能させる方法は、動的にrel属性をリンクに追加することです

$('#add_to_favs').attr('rel','sidebar');
于 2010-05-06T06:29:07.557 に答える
0

次のコードは Opera 8.54 で動作します。9.27 または 9.63 では動作しません (テスト用に入手できる他の 2 つのバージョンのみ)。9.27 と 9.63 では、単に Yahoo! に移動します。

var url = 'http://www.yahoo.com/';
var title = 'Yahoo!';
var elem = document.createElement('a');
elem.setAttribute('href', url);
elem.setAttribute('title', title);
elem.setAttribute('rel', 'sidebar');
elem.click();

ユーザーが開始せずにブックマーク/お気に入りを追加する機能を削除したと思われます。ブラウザーに新しい URL への移動を強制できるためwindow.location、おそらく DoS 脆弱性とは見なされません。

ユーザーがリンクをクリックすると、次のように動作します。

var url = 'http://www.yahoo.com/';
var title = 'Yahoo!';
var elem = document.createElement('a');
elem.setAttribute('href', url);
elem.setAttribute('title', title);
elem.setAttribute('rel', 'sidebar');
elem.appendChild(document.createTextNode('Add Bookmark'));
document.getElementsByTagName('body')[0].appendChild(elem);

さらに、window.external.AddFavorite(url, title);Internet Explorer 8 Beta 2 では、ユーザー以外によるお気に入りの追加が許可されなくなりました。ただし、リンクのイベントとして含めると、onclick正常に機能します。

<a href="http://www.yahoo.com/" title="Yahoo!" onclick="window.external.AddFavorite(this.href, this.title);return false;">Add to Favorites</a>

現在、Firefox 2.0.0.18 と 3.0.4 の両方で、ユーザーが開始しないブックマークの追加がサポートされていますが、将来のバージョンでそれが削除されても少し驚かないでしょう。

ウェブサイトへの訪問者に、リンクをクリックしたり、そのための明示的なアクションを実行したりせずに、お気に入り/ブックマークを追加するように強制しようとするのは、悪い形式であり、少し失礼であると考えられます. Web サイトにアクセスするだけでは、訪問者にお気に入り/ブックマークを強制的に追加しようとする十分な理由にはなりません。

于 2008-12-17T14:44:48.683 に答える