IE/Firefox 的 加入我的最愛 JavaScript

IE 和 Firefox 要做加入我的最愛的 Link, 現在還聽到這種需求, 事實上有點傻眼, 不過既然有人要, 個人的最低標準就是 IE 和 Firefox 都要支援才行~

程式如下:(下述 偵測 document.all 的方法不好, 建議再下面的那種寫法)

<a href="javascript:addBookmarkForBrowser();">加入我的最愛</a>

<script>
function addBookmarkForBrowser() {
    if (document.all){
        window.external.AddFavorite("http://plog.longwin.com.tw", "Tsung Blog");
    } else {
        window.sidebar.addPanel("Tsung Blog", "http://plog.longwin.com.tw", "");
    }
}
</script>

感謝 Hedger 的指點, 比較好的寫法如下:(只針對有 window.external.AddFavorite 或 window.sidebar.addPanel 單獨偵測使用, 會比 document.all 好很多)

function addBookmarkForBrowser(sTitle, sUrl)
{

    if (window.sidebar && window.sidebar.addPanel) {
        addBookmarkForBrowser = function(sTitle, sUrl) {
            window.sidebar.addPanel(sTitle, sUrl, "");
        }
    } else if (window.external) {
        addBookmarkForBrowser = function(sTitle, sUrl) {
            window.external.AddFavorite(sUrl, sTitle);
        }
    } else {
        addBookmarkForBrowser = function() {
            alert("do it yourself");
        }
    }

    return addBookmarkForBrowser(sTitle, sUrl);
}

addBookmarkForBrowser("Tsung Blog", "http://plog.longwin.com.tw");

作者: Tsung

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.

在〈IE/Firefox 的 加入我的最愛 JavaScript〉中有 9 則留言

  1. //宗毫兄
    //應該偵測要使用的object,而不是document.all
    //應該只偵測一次就好
    function addBookmarkForBrowser(sTitle, sUrl) {
    if (window.external && window.external.AddFavorite) {
    addBookmarkForBrowser = function(sTitle, sUrl) {
    window.external.AddFavorite(sUrl, sTitle);
    }
    } else if (window.sidebar && window.sidebar.addPanel) {
    addBookmarkForBrowser = function(sTitle, sUrl) {
    window.sidebar.addPanel(sTitle, sUrl, "");
    }
    } else {
    addBookmarkForBrowser = function() {
    alert("do it yourself");
    }
    }
    return addBookmarkForBrowser(sTitle, sUrl);
    }
    addBookmarkForBrowser("Tsung Blog", "http://plog.longwin.com.tw");

  2. Soga, 我看懂了, 原來可以這樣子.
    有 window.external.AddFavorite 就執行 window.external.AddFavorite,
    有 window.sidebar.addPanel 就執行 window.sidebar.addPanel, 這招太酷了~
    感謝大師指點~~ Orz..

  3. 您好, 我用您頁面上第一個偵測 document.all 的方法去做, 在ie及firefox都可以正常運作,
    但是如果採用您下方的那個做法, 在firefox是ok的, 但ie點下去卻完全沒反應, 左下的bar出現"網頁發生錯誤" , 我不知道問題是出在哪?
    或者我還是採用第一個偵測 document.all 的方法去做就好了呢? 它是有什麼缺點嗎?
    還請您解惑, 謝謝

  4. 大概試了一下,只是把判斷式換個順序,IE/FF 就都可以使用了
    理由...我不清楚 ^^==
    function addBookmarkForBrowser(sTitle, sUrl)
    {
    if (window.sidebar && window.sidebar.addPanel) {
    addBookmarkForBrowser = function(sTitle, sUrl) {
    window.sidebar.addPanel(sTitle, sUrl, "");
    }
    } else if (window.external) {
    addBookmarkForBrowser = function(sTitle, sUrl) {
    window.external.AddFavorite(sUrl, sTitle);
    }
    } else {
    addBookmarkForBrowser = function() {
    alert("do it yourself");
    }
    }
    return addBookmarkForBrowser(sTitle, sUrl);
    }

  5. 您有另外把 " && window.external.AddFavorite" 這字串拿掉.
    不過, 確實得要調換才會動, 不調換, 光把那行拿掉的話, FF 和 IE 都掛了. 🙁
    感謝提供~ Orz

  6. 1. 請問 IE8 是否有支援
    2. 請問是否有辦法加入我的最愛(直接加入),但是不要跳出加入我的最愛視窗?

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料