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



This work, unless otherwise expressly stated, is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.

關於 Tsung

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.
本篇發表於 Programming。將永久鏈結加入書籤。

IE/Firefox 的 加入我的最愛 JavaScript 有 9 則回應

  1. Hedger 說道:

    //宗毫兄
    //應該偵測要使用的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. Tsung 說道:

    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. Tsung 說道:

    用 Object 偵測的方法, 在未來比較不會有問題.
    詳可見: http://www.pageresource.com/jscript/jobdet.htm

  5. Pighead 說道:

    第二種方法在IE (IE7.0) 執行會有錯誤!,在FireFox OK

  6. Pighead 說道:

    大概試了一下,只是把判斷式換個順序,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);
    }

  7. Tsung 說道:

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

  8. hank 說道:

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

  9. Tsung 說道:

    1. 不知道, 目前沒有機器有灌 IE8, 無法確認
    2. 不行, 這是瀏覽器本身的安全顧慮吧~ :)

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *


4 + = 十一

你可以使用這些 HTML 標籤與屬性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>