IE中出现 "Stack overflow at line" 错误的解决方法

本文探讨了网页开发中常见的两类问题:一是使用系统保留的事件名称作为自定义函数名导致的功能冲突;二是因图片加载失败处理不当引发的死循环现象。通过具体实例分析了这两种情况的发生原因及潜在影响。

出现该错误提示,主要有两种原因:

      1. 使用系统的事件名称作为自定义函数名如:

            onclick / onsubmit ... 都是系统保留的事件名称,不允许作为重定义函数名称。

      2. 出现死循环 :

           如:在图片对象定义了 onerror 事件的循环处理、

           <img src="http://www.hoocar.com/1.gif" onerror="this.src='/image/default.gif'" />

           这里并不是说 1.gif 不存在, 可能是由于网络阻塞原因造成, 这时会执行 onerror 事件,

           调用 /images/default.gif 去做当前图片的路径, 但如果当前 /image/default.gif 这个图片文件不存在,

           再或者由于网络原因, 下载'/image/default.gif' 又出现错误, 这就出现了死循环。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

算法3.21 括号的匹配 【算法步骤】 ① 初始化空栈S。 ② 设置一标记性变量 fag,用来标记匹配结果以控制循环及返回结果,1表示正确匹配,。 表示错误匹配,flag 初值为1。 ③ 该取表达式,依次读人字符 ch,如果表达式没有读取完毕且 fag 非零,则循环执行以下操作: •若ch是左括号“[”或“(”,则将其压入栈; • 若ch 是右括号“)”,则根据当前栈顶元素的值分情况考虑:若栈非空且栈顶元素是“(”,则正确匹配,否则错误匹配,fag 置为0; • 若ch 是右括号“T”,则根据当前栈顶元素的值分情况考虑:若栈非空且栈顶元素是“[”,则正确匹配,否则错误匹配,flag 置为0。 ④退出循环后,如果栈空且 flag 值为1,则匹配成功,返回 true,否则返回 talse。 【算法描述】 Status Matching () 1//检验表达式中所含括号是否正确匹配,如果正确匹配,则返回true,否则返回false 1/表达式以“#”结束 InitStack (S) ; // 初始化空栈 flag=1; // 标记匹配结果以控制循环及返回结果 cin>>ch; // 读入第一个字符 while (ch!='#'&&flag) //假设表达式以“#”结尾 switch (ch) { case '[' : // 若是左括号,则将其压人栈 case '(' : Push (S, ch) ; break; case ')': // 若是“)”,则根据当前栈顶元素的值分情况考虑 iE(!StackEmpty (S)&&GetTop (S)=='(') Pop (S, x) ; 1/ 若栈非空且栈顶元素是“(”,则正确匹配 else flag=0; 1/若栈空或栈顶元素不是“(”,则错误匹配 break; case ']': //若是“]”,则根据当前栈顶元素的值分情况考虑 if(!StackEmpty (S) &&GetTop (S) =='二) Pop (S, x) ; // 若栈非空且栈顶元素是“[”,则正确匹配 else flag=0; 1/ 若栈空或栈顶元素不是“[”,则错误匹配 break; //switch cin>>ch; // 继续读入下一个字符 //while if(StackEmpty(S)&&flag) return true; //匹配成功 else return false;//匹配失败 括号匹配,现在要求编写一c语言 算法,检测一个 c++源程序文件中 括号是否配对包括()[]{}三类括号,需注意单个括号字符,字符串中的括号,注释中的括号均不列入检测范围,并且希望标注出所有不配对括号的位置,以你给出的代码为例进行扩展不改变代码风格
最新发布
10-10
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值