“不能执行已释放的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 相关文章推荐
(function(){})()的用法与优点
Mar 11 Javascript
基于jquery用于查询操作的实现代码
May 10 Javascript
jquery animate图片模向滑动示例代码
Jan 26 Javascript
JS访问SWF的函数用法实例
Jul 01 Javascript
javascript中类的定义方式详解(四种方式)
Dec 22 Javascript
深入浅析javascript中的作用域(推荐)
Jul 19 Javascript
js案例之鼠标跟随jquery版(实例讲解)
Jul 21 jQuery
微信小程序图片选择区域裁剪实现方法
Dec 02 Javascript
详解vue2.0+vue-video-player实现hls播放全过程
Mar 02 Javascript
微信小程序实现页面分享onShareAppMessage
Aug 12 Javascript
微信小程序图片加载失败时替换为默认图片的方法
Dec 09 Javascript
在Vue中创建可重用的 Transition的方法
Jun 02 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
新的一年,新的期待:DC在2020年的四部动画电影
2020/01/01 欧美动漫
php中数据的批量导入(csv文件)
2006/10/09 PHP
destoon实现公司新闻详细页添加评论功能的方法
2014/07/15 PHP
利用PHP函数计算中英文字符串长度的方法
2014/11/11 PHP
Laravel解决nesting level错误和隐藏index.php的问题
2019/10/12 PHP
tp5.0框架隐藏index.php入口文件及模块和控制器的方法分析
2020/02/11 PHP
Gambit vs CL BO3 第三场 2.13
2021/03/10 DOTA
用正则xmlHttp实现的偷(转)
2007/01/22 Javascript
javascript学习基础笔记之DOM对象操作
2011/11/03 Javascript
Javascript全局变量var与不var的区别深入解析
2013/12/09 Javascript
js中call与apply的用法小结
2013/12/28 Javascript
一个JavaScript函数把URL参数解析成Json对象
2014/09/24 Javascript
jQuery在ul中显示某个li索引号的方法
2015/03/17 Javascript
javascript封装的sqlite操作类实例
2015/07/17 Javascript
Ionic如何创建APP项目
2016/06/03 Javascript
使用vue-resource进行数据交互的实例
2017/09/02 Javascript
利用JS响应式修改vue实现页面的input值
2019/09/02 Javascript
详解vue 组件
2020/06/11 Javascript
python 调用HBase的简单实例
2016/12/18 Python
浅析python中numpy包中的argsort函数的使用
2018/08/30 Python
python logging模块书写日志以及日志分割详解
2019/07/22 Python
python3实现单目标粒子群算法
2019/11/14 Python
python构造IP报文实例
2020/05/05 Python
装上这 14 个插件后,PyCharm 真的是无敌的存在
2021/01/11 Python
波兰家具和室内装饰品购物网站:Vivre
2018/04/10 全球购物
美国在线购买空气净化器、除湿器、加湿器网站:AllergyBuyersClub
2021/03/16 全球购物
护理自荐信范文
2013/10/05 职场文书
科室工作的个人自我评价
2013/10/30 职场文书
医学专业毕业生个人的求职信
2013/12/04 职场文书
中学教师管理制度
2014/01/14 职场文书
高中家长寄语
2014/04/02 职场文书
海洋科学专业求职信
2014/08/10 职场文书
2015年世界粮食日演讲稿
2015/03/20 职场文书
解决python3安装pandas出错的问题
2021/05/20 Python
tp5使用layui实现多个图片上传(带附件选择)的方法实例
2021/11/17 PHP
苹果发布了MagSafe固件更新,可以不外接电源实现最高7.5W充电
2022/04/21 数码科技