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(我仅有的两个可用于测试的其他版本)。在 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 目前都支持非用户发起的书签添加,但看到他们在未来的版本中删除它我不会感到惊讶。

我认为,在不点击链接或采取明确行动的情况下,试图强迫网站访问者添加收藏夹/书签被认为是一种糟糕的形式,而且有点粗鲁。仅仅访问一个网站并不足以迫使这些访问者为其添加收藏夹/书签。

于 2008-12-17T14:44:48.683 回答