兼容多数浏览器的js添加收藏夹脚本

本文介绍了一种JavaScript实现的跨浏览器“加入收藏”功能的方法,包括对IE11及Firefox等现代浏览器的支持策略,并提供了兼容性的改进思路。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

浏览器不断发展,js的很多脚本需要跟进才能适应,目前多数代码对新版本浏览器(IE11, Firefox 27)无法适用,特关注跟进。

推荐代码1

适用浏览器:IE11(windows 8.1), Firefox 37.0.1(windows 8.1),

不适用浏览器:IE6(windows xp),

测试代码

<script type="text/javascript">
function addFavorite(){
    var bookmarkUrl = "http://baidu.com";
    var bookmarkTitle = "baidu";

    if (window.sidebar) { // For Mozilla Firefox Bookmark
        window.sidebar.addPanel(bookmarkTitle, bookmarkUrl,"");
    } else if( window.external || document.all) { // For IE Favorite
        window.external.AddFavorite( bookmarkUrl, bookmarkTitle);
    } else { // for other browsers which does not support
         alert('浏览器不支持,请按 Ctrl+D 手动收藏!');
         return false;
    }
}
</script><a href="#" rel="sidebar" onclick="addFavorite()">加入收藏</a>

 解释说明

1. Firefox 37中废除了window.sidebar.addPanel的功能,如果要使用需要在<a>标签中添加rel="sidebar"才能使用。

2. IE11/Firefox 37中均存在window.external和document.all,因此需要将专门针对Firefox的判断if (window.sidebar)放在前面判断。

 

推荐代码2

jQuery.fn.addFavorite = function(l, h) {
        return this.click(function() {
            var obj = $(this);
            if($.browser.msie) {
                window.external.addFavorite(h, l);
            } else if (jQuery.browser.mozilla || jQuery.browser.opera) {
                obj.attr("rel", "sidebar");
                obj.attr("title", l);
                obj.attr("href", h);
            } else {
                alert("请使用Ctrl+D将本页加入收藏夹!");
            }
        });
    };
    $('#fav').addFavorite('收藏本站',location.href);


不适用于IE11:需改进。

 

 Javascript代码获取浏览器的User-Agent信息:navigator.userAgent

navigator.userAgent
"Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; .NET4.0E; .NET4.0C; .NET CLR 3.5.30729; .NET CLR 2.0.50727; .NET CLR 3.0.30729; Tablet PC 2.0; rv:11.0) like Gecko"

IE11(windows 8.1)报文请求头: User-Agent: "Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko"

Firefox 37(windows 8.1)报文请求头:
User-Agent: "Mozilla/5.0 (Windows NT 6.3; WOW64; rv:37.0) Gecko/20100101 Firefox/37.0"

Chrome 41:
"Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.101 Safari/537.36"

 

目标

找到适用于尽可能多浏览器的js代码,封装,开放,共享。

 

参考:

[1] http://stackoverflow.com/questions/5828965/bookmark-on-click-using-jquery

[2] IE11 用户代理字符串User-Agent(UA)更改--MSDN

[3] JqueryBookmark--Github

[4] jquery实现“加入收藏”功能 (不兼容IE11,需改进)

[5] how to detect IE11 using jquery

转载于:https://www.cnblogs.com/xfiver/p/4437233.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值