Bootstrap-select 无法在 IE8 上使用及解决!

众所周知,Bootstrap是来自 Twitter 的基于HTML、CSS、JavaScript 的、移动设备优先的、并被所有主流浏览器支持的、用于快速开发 web 应用程序和网站的前端框架。

最近也打算用Bootstrap 的组件开发自己的网页,为了统一风格,用到了 silviomoreto 提供的 Bootstrap 风格的select 控件,但遇到了一个问题,那就是 Bootstrap-select 可以在 Chrome 35 上正常显示并使用,但在 IE8 却无法显示,代码如下:

<!DOCTYPE html>
<html>
<head>
    <title>Test Bootstrap example!</title>
    <link href="Styles/bootstrap.css" rel="stylesheet" type="text/css" />
    <link href="Styles/bootstrap-select.min.css" rel="stylesheet" type="text/css" />
    <!-- Optional theme -->
    <script src="Scripts/jquery-1.11.1.min.js" type="text/javascript"></script>
    <script src="Scripts/bootstrap.min.js" type="text/javascript"></script>
    <script src="Scripts/bootstrap-select.min.js" type="text/javascript"></script>
    <script type="text/javascript">
        $(document).ready(function () {
            $('.selectpicker').selectpicker();

            $('.selectpicker').selectpicker({
                style: 'btn-info',
                size: 4
            });
        });
    </script>
</head>
<body>
    <select class="selectpicker">
        <option>Mustard</option>
        <option>Ketchup</option>
        <option>Relish</option>
    </select>
</body>
</html>

用 IE8 打开发现是这句话出错:
$('.selectpicker').selectpicker();

原以为是 IE8 本身对 Bootstrap 的兼容性不好,所以加入了以下 js 文件:

<script src="Scripts/html5shiv.js" type="text/javascript"></script>
<script src="Scripts/respond.min.js" type="text/javascript"></script>

但还是没有效果,然后就在 Google 上搜,发现是这个错误:

There is an error in the htmlEscape function; IE8 says

Message: Object doesn't support this property or method
Line: 63
Char: 5
Code: 0
URI: bootstrap-select/js/bootstrap-select.js
Line 63 is


var source = '(?:' + Object.keys(escapeMap).join('|') + ')',

Solution would be to add a polyfill for browsers that don't support Object.keys()

Object.keys = Object.keys || function(
    o, // object
    k, // key
    r  // result array
) {
    // initialize object and result
    r = [];
    // iterate over object keys
    for (k in o)
        // fill result array with non-prototypical keys
        r.hasOwnProperty.call(o, k) && r.push(k);
    // return result
    return r
};

就是在 bootstrap-select.min.js 里无法解析 Object.keys() 对象,我们在该 js 文件的后面加上对它的解析方法就行了, OK,问题已经解决了! 




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值