在Opera中使用JavaScript添加“收藏夹”

时间:2008-12-17 13:10:22

标签: javascript opera

如何在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 个答案:

答案 0 :(得分:6)

如果你坚持使用它,那么在没有动态生成冗余链接的情况下进行操作:

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

但是,请不要这样做。

作为Opera的用户,我会感激不要推动那种时尚 - 如果我愿意的话,我可以轻松地将'标签栏/标签/面板/快速标签拖动。

答案 1 :(得分: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;
  }
}

CAll with

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

(随意制作更不引人注目的内容,我只想表明用户事件要求)

答案 2 :(得分:1)

在Opera 10中获取“添加到收藏夹”链接工作的方法是动态地将 rel 属性添加到链接

$('#add_to_favs').attr('rel','sidebar');

答案 3 :(得分:0)

以下代码适用于Opera 8.54。它在9.27或9.63(我可用于测试的其他两个版本)中不起作用。在9.27和9.63中,它只是导航到雅虎!:

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();

怀疑他们删除了添加书签/收藏的功能,而无需用户启动它。由于您已经可以强制浏览器使用可能不被视为DoS漏洞的window.location导航到新网址。

如果用户点击链接,以下工作正常:

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目前都支持非用户启动的书签添加,但我也不会对它们在未来版本中删除它感到有点惊讶。

我认为,如果没有他们点击链接或采取明确的行动来强制访问网站来添加收藏夹/书签,我认为它被认为是不好的形式和有点粗鲁。仅仅访问网站并不足以让这些访问者加入收藏夹/书签。