如何解决IE8原型和fn问题?

时间:2015-03-27 05:13:25

标签: javascript jquery internet-explorer-8

我在IE8中遇到了jquery.fn和prototype的大问题。我在demo.js文件中写了一个简单的jquery库:

 (function(){
    Demo = function(){
        return new DemoLibrary();
    };
    function initAjaxError(){
      $(document).ajaxError(function(e, request, settings){
        switch (request.status) {
           case 400:
             var msg = $.parseJSON(request.getResponseHeader('message'));
             console.log(msg.message);
             break;
                default:
                case 403:
                    console.log('Access denied!');
                    break;
            }
        }); 
    }
    var DemoLibrary = function(){
        initAjaxError();
    };
    DemoLibrary.prototype = {
        prepareBody: function(){
           $('body').find('h1').css('font-size','72px');
        },
    };
    window.Test = window.$$ = demo = Demo();
    $$.fn = Object.getPrototypeOf(demo);
}());

然后在plugin.js中编写一些着色插件的代码:

(function(){
    $$.fn.coloring ={
        setColor : function(hexValue,selector){
            $('body').find($(selector)).css('color','#'+hexValue);
       }
    };
}());

最后,我在我的index.html文件中使用jquery-1.11.2.min.js加载这些文件:

<!DOCTYPE html>
<html lang="en">
    <head>
       <meta charset="utf-8">
       <script src="jquery-1.11.2.min.js"></script>
       <script src="demo.js"></script>
       <script src="plugin.js"></script>
       <script>
         $(document).ready(function() {
            $$.prepareBody();
            $$.coloring.setColor('ff0000', 'p');
         })
      </script>
    </head>
    <body>
        <div>
           <h1>This is h1 heading tag</h1>
           <p>this is a paragraph</p>
           <div>this  is a div paragraph</div>
           <h3><p>this is another paragraph</p></h3>
       </div>
   </body>
</html>

它在Firefox,Chrome和IE9及更高版本中运行良好,但在IE8中有一些错误,第一个错误说:

"Object doesn't support this property or method" in demo.js line 30

第30行:

$$.fn = Object.getPrototypeOf(demo);

和其他错误是:

'$$.fn' is null or not an object 

在plugin.js第2行,另一个错误:

'$$.coloring' is null or not an object
index.html第11行中的

。 最后,我在jquery库之后和demo.js之前添加了prototype.js文件:

<script src="jquery-1.11.2.min.js"></script>
<script src="prototype.js"></script>
<script src="demo.js"></script>
<script src="plugin.js"></script>

我把这个脚本放在prototype.js中:

if ( typeof Object.getPrototypeOf !== "function" ){
    (function(){
        function getPrototypeValue( o, p ) {
            if ( o.hasOwnProperty(p)){
                var ownValue = o[ p ];
                if ( delete o[ p ] ) {
                    var prototypeValue = o[ p ];
                    o[p] = ownValue;
                    return prototypeValue;
                } else {
                    return o[p];
                }
            } else{
                return o[p];
            }
        }
        if (typeof "".proto === "object" ){
            Object.getPrototypeOf = function( object ) {
                return getPrototypeValue( object, 'proto' );
            };
        }else{
            Object.getPrototypeOf = function( object ) {
                getPrototypeValue( object, 'constructor' ).prototype;
            };
        }
    }());
}

现在,这些错误尚未解决:

'$$.fn' is null or not an object 

在plugin.js第2行,另一个错误:

'$$.coloring' is null or not an object

在index.html第11行。

我非常担心自己的工作。 Enybody能救我吗?

0 个答案:

没有答案