2008-12-17 89 views
4

如何使歌剧这项工作?我发现了这片的歌剧代码,但它不为我工作:“添加到收藏夹”用JavaScript在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; 
    } 
} 

蜻蜓错误控制台是沉默的,没有错误存在的。

回答

6

如果你坚持它,然后做没有动态生成的冗余链路:

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

但请,就是不去做。

歌剧用户本人将不推是时尚感激 - 我可以轻松地拖放标签,书签栏/面板/ speedial如果我选择。

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

嫌疑他们删除添加书签/最喜欢的,而用户发起的能力。由于您已经可以强制浏览器使用window.location导航到新的URL,因此可能不被视为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> 

两个火狐2.0.0.18和3.0.4目前支持发起的书签添加非用户,但我会不会有点惊讶地看到他们在将其删除未来的版本。

我相信它被认为是不好的形式和有点粗鲁,试图迫使访问者到网站,添加收藏夹/书签没有他们点击一个链接或采取明确的行动,将做到这一点。仅仅访问一个网站并不足以试图强迫这些访问者添加收藏夹/书签。

3

歌剧院强制执行相同的用户活动要件允许书签,这样你的代码将无法正常工作,因为用户从未刚刚创建的链接点击。

都需要这样的东西更多:

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> 

(随意做出更不显眼的,我只是想表明用户事件要求)

1

获得“添加到收藏夹”的方式在Opera 10的链接工作是一个相对属性动态添加一个链接

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