我在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能救我吗?