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");
//宗毫兄
//應該偵測要使用的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");
Soga, 我看懂了, 原來可以這樣子.
有 window.external.AddFavorite 就執行 window.external.AddFavorite,
有 window.sidebar.addPanel 就執行 window.sidebar.addPanel, 這招太酷了~
感謝大師指點~~ Orz..
您好, 我用您頁面上第一個偵測 document.all 的方法去做, 在ie及firefox都可以正常運作,
但是如果採用您下方的那個做法, 在firefox是ok的, 但ie點下去卻完全沒反應, 左下的bar出現"網頁發生錯誤" , 我不知道問題是出在哪?
或者我還是採用第一個偵測 document.all 的方法去做就好了呢? 它是有什麼缺點嗎?
還請您解惑, 謝謝
用 Object 偵測的方法, 在未來比較不會有問題.
詳可見: http://www.pageresource.com/jscript/jobdet.htm
第二種方法在IE (IE7.0) 執行會有錯誤!,在FireFox OK
大概試了一下,只是把判斷式換個順序,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);
}
您有另外把 " && window.external.AddFavorite" 這字串拿掉.
不過, 確實得要調換才會動, 不調換, 光把那行拿掉的話, FF 和 IE 都掛了. 🙁
感謝提供~ Orz
1. 請問 IE8 是否有支援
2. 請問是否有辦法加入我的最愛(直接加入),但是不要跳出加入我的最愛視窗?
1. 不知道, 目前沒有機器有灌 IE8, 無法確認
2. 不行, 這是瀏覽器本身的安全顧慮吧~ 🙂