兼容性问题
SCRIPT70: Permission denied
项目用AngularJS,在升级JQuery到1.12.x后,使用IE浏览器进入项目首页,点击按钮打开窗口时控制台报SCRIPT70: Permission denied。 查阅各种资料应该是关于iframes的问题,迫于时间也没有深究,最后修改JQuery源码解决问题。
function Sizzle( selector, context, results, seed ) {
var match, elem, m, nodeType,
i, groups, old, nid, newContext, newSelector;
//通过增加下面一段try catch解决
//http://bugs.jquery.com/ticket/14535
try{
document === document; //may cause permission denied
}
catch(err){
document = window.document; //resets document, and no more permission denied errors.
}
if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {
setDocument( context );
}
//..............//
}
复制代码
至于为什么这么改,希望有大佬指点迷津
jQuery.dataTables IE下无数据显示null的问题
在chrome、Firefox中,如果没有render函数,表格里无数据都能正常显示为空字符串,然而在IE下显示为'null'。需要修改_fnGetCellData的返回值。
function _fnGetCellData() {
...
/**
* 没直接使用三目
* defaultContent ? defaultContent : '';
* 原因是defaultContent可能为0
*/
if (typeof defaultContent == 'undefined') {
defaultContent = '';
}
return defaultContent;
}
复制代码
不能执行已释放script的代码
从Dom中删除IFrame后,IE9+会回收内存。
项目中用了类似于window的对象top,各个模块的通讯通过定义全局变量在top上,在IE删除iframe后回收内存,再去操作相关的参数就会报错。
为什么要使用[].slice.call(arguments)
因为arguments是类数组对象,虽然和数组长得很像,但并不是真正的数组,不能使用数组的方法,所以借用Array.prototype上的方法使arguments转换成真正的数组。