“不能执行已释放的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 相关文章推荐
参考:关于Javascript中实现暂停的几篇文章
Mar 04 Javascript
js下用gb2312编码解码实现方法
Dec 31 Javascript
JavaScript显示表单内元素数量的方法
Apr 02 Javascript
jQuery-1.9.1源码分析系列(十一)DOM操作续之克隆节点
Dec 01 Javascript
基于Vue.js的表格分页组件
May 22 Javascript
老生常谈onBlur事件与onfocus事件(js)
Jul 09 Javascript
AngularJS基础 ng-mouseover 指令简单示例
Aug 02 Javascript
javascript实现滑动解锁功能
Mar 22 Javascript
JS实现十分钟倒计时代码实例
Oct 18 Javascript
JavaScript中继承原理与用法实例入门
May 09 Javascript
vue单文件组件无法获取$refs的问题
Jun 24 Javascript
vue中父子组件传值,解决钩子函数mounted只运行一次的操作
Jul 27 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
音乐朗读剧《MARS RED》2021年TV动画化决定!
2020/03/06 日漫
PHP基础学习小结
2011/04/17 PHP
ajax 的post方法实例(带循环)
2011/07/04 PHP
php模板原理讲解
2013/11/13 PHP
PHP使用GD库输出汉字的方法【测试可用】
2016/11/10 PHP
PHP常用header头定义代码示例汇总
2020/08/29 PHP
js substr支持中文截取函数代码(中文是双字节)
2013/04/17 Javascript
jQuery中的val()示例应用
2014/02/26 Javascript
javascript获取本机操作系统类型的方法
2015/08/13 Javascript
Bootstrap和Angularjs配合自制弹框的实例代码
2016/08/24 Javascript
详解js树形控件—zTree使用总结
2016/12/28 Javascript
详解Javascript百度地图接口开发文档中的类和方法
2017/02/07 Javascript
jquery Easyui Datagrid实现批量操作(编辑,删除,添加)
2017/02/20 Javascript
webstorm中配置Eslint的两种方式及差异比较详解
2018/10/19 Javascript
JavaScript实现弹出窗口效果
2020/12/09 Javascript
Vue实现简易购物车页面
2020/12/30 Vue.js
python通过exifread模块获得图片exif信息的方法
2015/03/16 Python
讲解Python中运算符使用时的优先级
2015/05/14 Python
python中os模块详解
2016/10/14 Python
Python 3中的yield from语法详解
2017/01/18 Python
python 调用c语言函数的方法
2017/09/29 Python
使用apidoc管理RESTful风格Flask项目接口文档方法
2018/02/07 Python
python3使用print打印带颜色的字符串代码实例
2019/08/22 Python
Pytorch数据拼接与拆分操作实现图解
2020/04/30 Python
django 连接数据库出现1045错误的解决方式
2020/05/14 Python
Keras使用ImageNet上预训练的模型方式
2020/05/23 Python
Keras 利用sklearn的ROC-AUC建立评价函数详解
2020/06/15 Python
CSS3之多背景background使用示例
2013/10/18 HTML / CSS
HTML5上传文件显示进度的实现代码
2012/08/30 HTML / CSS
农民工创业典型事迹
2014/01/25 职场文书
投资合作协议书
2014/04/17 职场文书
访谈节目策划方案
2014/05/15 职场文书
2015年评职称个人工作总结
2015/10/15 职场文书
2016春季幼儿园开学寄语
2015/12/03 职场文书
高一数学教学反思
2016/02/18 职场文书
【TED出品】天梯非主流开心游1700 划水骑士
2022/03/31 魔兽争霸