ie的新版本js的window.onerror.caller.caller最终总是指向自身导致死环
来源:互联网 发布:php 反射机制 编辑:程序博客网 时间:2024/06/03 22:11
--------测试代码-----------
<html>
<title></title><body>
<textarea id="test">
出错代码;
</textarea>
<input type="button" onclick="try{window.execScript(test.value,'javascript');}catch(e){} " value = '运行输入框中js代码'/><script>
window.onerror = function(sMessage,sUrl,sLine)
{
var str = window.err_t + "出错了!\n\n";
if (window.err_t == '初始化页面时') str += "在文件[ " + sUrl + " ]";
str += "第" + sLine + "行\n" + sMessage + "\n\n";
var func = window.onerror.caller;
var index = 0;
while(func!=null){
str += "[" + index + "] 调用时参数/函数\n";
for(var i=0;i<func.arguments.length;i++) str += func.arguments[i] + ",";
str += "\n" + func + "\n\n";
if (func === func.caller) {
break;//在ie6中不必检测,但是后面版本可能有问题
}
func = func.caller;
index++;
//alert(func.caller);//去掉上面的断点即可发现最后总是指向自己
}
alert(str);
return true;
}
</script>
</body>
</html>
----------------------区别------
这个代码我当时是在ie6的情况下写的.
当时window.onerror.caller子对象的子对象是不会重复的.
而在ie9的测试中,我发现这个代码是死环.好像ie8是没有问题.
--------在ie6中这个检测是没必要加的--------
if (func === func.caller) {
break;//在ie6中不必检测,但是后面版本可能有问题
}
这说明js新版本对某些机制进行修改了.
- ie的新版本js的window.onerror.caller.caller最终总是指向自身导致死环
- js 函数的 caller 属性
- js的caller和callee
- js caller 和callee的区别
- js中callee与caller的区别
- js中caller和callee的区别
- js caller和callee的详细介绍
- arguments的caller,callee
- javascript的caller机制
- callee & caller的区别
- caller 与callee的区别
- caller和callee的使用方法
- caller和callee的区别
- caller和callee的区别
- caller和callee的区别
- caller和callee的区别
- caller和callee的区别
- caller和callee的区别
- linux 删除以-开头的文件名的文件
- godday:Just Days Left to SAVE - 31% OFF ENDIN
- php: 字符串定界符(<<<)形式定义字符串结束必须换行
- php: return与=区别及参数中$var=\'d\'与$var区别 => 难题已解
- php: 正则中匹配$符号的写法
- ie的新版本js的window.onerror.caller.caller最终总是指向自身导致死环
- ie的innerHTML访问出错,无语的错误
- 数据挖掘之模式挖掘(频繁模式挖掘与Apriori算法)
- apache 日志:customlog配置的piped log program \'/log.sh\' failed unexpectedly错误->解决
- 4.9
- linux:bash脚本管道(|)输入而非参数的获取方式
- linux:用php语法写脚本且获取stdin/stdout的方式,对于不想使用bash语法非常有用
- js:破解/生成验证码基础--2d二维码点生成/处理
- 数据存储之Preferences