2008-12-17 109 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');