javascript输出调用堆栈
在需要获取调用堆栈的地方插入如下代码
try{
throw(new Error());
}catch(e){
alert(e.stack);
var c = arguments.callee.caller,len=1;
try{
while(len++){
c=c.arguments.callee.caller;
}
}catch(ee){
}finally{
alert(len+"\n"+c);
}
t = parseInt(prompt("输入要显示的函数级数",0),10);
while(t>0&&t<len){
c = arguments.callee.caller;
while(t>1){
t--;
c = c.arguments.callee.caller;
}
alert(""+c);
t = parseInt(prompt("输入要显示的函数级数,中断显示输入0",0),10);
}
}
chrome、firefox、safari下可行,IE下无效
最近一个页面在IPAD上和桌面上的响应不同,没有苹果机,虚拟机上又不能进行远程调试,用此方法获取可能出问题的位置的调用堆栈
javascript正则表达式替换
k2v = {......};
oldStr = ".......";
var str = "",k = "";
for(k in k2v){
if(k){
str += "|"+k;
}
}
if(str){
var f = function($1){return k2v[$1];};
oldStr = oldStr.replace(new RegExp(str.substr(1)),f);
}
ios6浏览器问题
在需要获取调用堆栈的地方插入如下代码
try{
throw(new Error());
}catch(e){
alert(e.stack);
var c = arguments.callee.caller,len=1;
try{
while(len++){
c=c.arguments.callee.caller;
}
}catch(ee){
}finally{
alert(len+"\n"+c);
}
t = parseInt(prompt("输入要显示的函数级数",0),10);
while(t>0&&t<len){
c = arguments.callee.caller;
while(t>1){
t--;
c = c.arguments.callee.caller;
}
alert(""+c);
t = parseInt(prompt("输入要显示的函数级数,中断显示输入0",0),10);
}
}
chrome、firefox、safari下可行,IE下无效
最近一个页面在IPAD上和桌面上的响应不同,没有苹果机,虚拟机上又不能进行远程调试,用此方法获取可能出问题的位置的调用堆栈
javascript正则表达式替换
k2v = {......};
oldStr = ".......";
var str = "",k = "";
for(k in k2v){
if(k){
str += "|"+k;
}
}
if(str){
var f = function($1){return k2v[$1];};
oldStr = oldStr.replace(new RegExp(str.substr(1)),f);
}
ios6浏览器问题
页面中的INPUT取得焦点,弹出键盘后,键盘输入第一个字符时会触发window的resize事件
dojox.mobile.common侦听window的resize事件resize所有孩子有时会出现异常,只好在响应函数中直接退出避免重新resize
也许会导致其他问题