“不能执行已释放的Script代码”错误的原因及解决办法


Posted in Javascript onSeptember 09, 2007

很多web开发者或许都遇到过这样的问题,程序莫名奇怪出现“不能执行已释放Script的代码”,错误行1,列1.对于这种消息描述不着边,行列描述更是让人迷茫的js错误,相信是所有调试js程序的朋友们最郁闷也最憎恨的事情!遇到这种问题,最简单的办法直接把错误贴到baidu或google那个小输入框中让他们先给点指点,再去解决,可这次却没有这么容易,在baidu搜索似乎很多人都遇到过这种问题,但是都是些什么qq空间错误,狂晕,或者就是只有问没有答的,闷!

   这种错误从何调起?后面没办法,又是猜测又是try...catch蹦错误,找了半天终于找到错误的位置,可是发现写的并没有什么问题,后来绞尽脑汁思考程序的解释过程,确依旧没有什么头绪。继续baidu,突然在某网页中看到一句话:当一个页面关闭时会自动释放页面的js。短短一句话给了我不小的启发。检查我的程序是否有页面的关闭或转向,发现是执行了转向,然后再回到这个页面时出现了错误。突然间觉得明白了。

场景:页面有a和b两个框架页iframe,在b页面中通过js将一个函数引用(函数指针)传入到a页面并保存在a页面的一个变量中,a页面可以通过这个引用操作b页面或执行b页面的一些程序,记住:此时在a页面中的变量保存的是b页面某函数的指针(内存地址),当b页面刷新或重定向后由于b页面重新构建,所以b页面中的函数指针就发生了变化,但a中仍然保存着b页面刷新前传过来的指针(内存地址),这时a页面中变量通过所指向的指针地址就无法访问到b页面中对应的函数了(因为函数指针地址已经发生了变化,及原来的内存指针已经释放),这样在执行时就会出现“不能执行已经释放的Script代码”的错误。

解决办法:在a页面中加上容错处理,当引用出现错误时要将保存的引用(函数指针)清空或指向一个默认的函数。另外在b页面再次载入时要重新给a页面传送函数引用,这样就不会出现这样的错误了。

或许这里的描述有些过于抽象了,看一个演示再看看代码就容易明白了,先test,然后return url,之后再test就会出现这个问题了。

Javascript 相关文章推荐
ie和firefox中img对象区别的困惑
Dec 27 Javascript
获取URL地址中的文件名和参数的javascript代码
Sep 02 Javascript
跨浏览器的 mouseenter mouseleave 以及 compareDocumentPosition的使用说明
May 04 Javascript
js模仿windows桌面图标排列算法具体实现(附图)
Jun 16 Javascript
js 采用delete实现继承示例代码
May 20 Javascript
详解 javascript中offsetleft属性的用法
Nov 11 Javascript
JS 组件系列之Bootstrap Table 冻结列功能IE浏览器兼容性问题解决方案
Jun 30 Javascript
详解从买域名到使用pm2部署node.js项目全过程
Mar 07 Javascript
vue 使用element-ui中的Notification自定义按钮并实现关闭功能及如何处理多个通知
Aug 17 Javascript
微信小程序tabBar设置实例解析
Nov 14 Javascript
Nuxt页面级缓存的实现
Mar 09 Javascript
JavaScript canvas实现文字时钟
Jan 10 Javascript
超强的IE背景图片闪烁(抖动)的解决办法
Sep 09 #Javascript
IE不出现Flash激活框的小发现的js实现方法
Sep 07 #Javascript
用javascript实现画板的代码
Sep 05 #Javascript
js中的escape及unescape函数的php实现代码
Sep 04 #Javascript
一个符号插入器 中用到的js代码
Sep 04 #Javascript
【消息提示组件】,兼容IE6/7&&FF2
Sep 04 #Javascript
一个用js实现控制台控件的代码
Sep 04 #Javascript
You might like
PHP array 的加法操作代码
2010/07/24 PHP
关于访问控制的一首PHP面试题(对属性或方法的访问控制)
2012/09/13 PHP
php实现paypal 授权登录
2015/05/28 PHP
原生JS实现Ajax通过POST方式与PHP进行交互的方法示例
2018/05/12 PHP
PHP调用微博接口实现微博登录的方法示例
2018/09/22 PHP
javascript cookie解码函数(兼容ff)
2008/03/17 Javascript
javascript调试之DOM断点调试法使用技巧分享
2014/04/15 Javascript
JavaScript中文件上传API详解
2016/04/01 Javascript
JS获取鼠标选中的文字
2016/08/10 Javascript
AngularJS实现标签页的两种方式
2016/09/05 Javascript
EasyUI 中combotree 默认不能选择父节点的实现方法
2016/11/07 Javascript
jQuery Validate设置onkeyup验证的实例代码
2016/12/09 Javascript
vue-router 导航钩子的具体使用方法
2017/08/31 Javascript
判断jQuery是否加载完成,没完成继续判断的解决方法
2017/12/06 jQuery
微信小程序登录按钮遮罩浮层效果的实现方法
2018/12/16 Javascript
vue.js使用v-model实现表单元素(input) 双向数据绑定功能示例
2019/03/08 Javascript
五分钟搞懂Vuex实用知识(小结)
2019/08/12 Javascript
Vue中用JSON实现刷新界面不影响倒计时
2020/10/26 Javascript
jQuery实现简单轮播图效果
2020/12/27 jQuery
[42:39]老党炸弹人试玩视频
2014/09/03 DOTA
python3实现短网址和数字相互转换的方法
2015/04/28 Python
使用rst2pdf实现将sphinx生成PDF
2016/06/07 Python
Django分页查询并返回jsons数据(中文乱码解决方法)
2018/08/02 Python
python实现在cmd窗口显示彩色文字
2019/06/24 Python
python基础 range的用法解析
2019/08/23 Python
Python新手学习函数默认参数设置
2020/06/03 Python
解决Python中导入自己写的类,被划红线,但不影响执行的问题
2020/07/13 Python
python中remove函数的踩坑记录
2021/01/04 Python
估算杭州有多少软件工程师
2015/08/11 面试题
2014大学生党员评议个人总结
2014/09/22 职场文书
卖房授权委托书样本
2014/10/05 职场文书
2014年自愿离婚协议书
2014/10/10 职场文书
小学教师岗位职责
2015/04/02 职场文书
2015年党员发展工作总结
2015/05/13 职场文书
电影建党伟业观后感
2015/06/01 职场文书
SpringBoot全局异常处理方案分享
2022/05/25 Java/Android