“不能执行已释放的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 相关文章推荐
jQuery 点击图片跳转上一张或下一张功能的实现代码
Mar 12 Javascript
循环 vs 递归浅谈
Feb 28 Javascript
12个超实用的JQuery代码片段
Nov 02 Javascript
JavaScript程序中实现继承特性的方式总结
Jun 24 Javascript
node.js缺少mysql模块运行报错的解决方法
Nov 13 Javascript
Vue数据驱动模拟实现4
Jan 12 Javascript
js数组去重的方法总结
Jan 18 Javascript
layui表格 列自动适应大小失效的解决方法
Sep 06 Javascript
JS使用H5实现图片预览功能
Sep 30 Javascript
解决Vue的项目使用Element ui 走马灯无法实现的问题
Aug 03 Javascript
在vue项目中利用popstate处理页面返回的操作介绍
Aug 06 Javascript
在vue中使用console.log无效的解决
Aug 09 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利用单例模式实现日志处理类库
2014/02/10 PHP
PHP模拟登陆163邮箱发邮件及获取通讯录列表的方法
2015/03/07 PHP
php中实现用数组妩媚地生成要执行的sql语句
2015/07/10 PHP
thinkPHP模板中函数的使用方法示例
2016/11/30 PHP
Yii框架使用魔术方法实现跨文件调用功能示例
2017/05/20 PHP
CakePHP框架Model关联对象用法分析
2017/08/04 PHP
Swoole实现异步投递task任务案例详解
2019/04/02 PHP
js截取字符串的两种方法及区别详解
2013/11/05 Javascript
jquery遍历select元素(实例讲解)
2013/12/31 Javascript
js模拟hashtable的简单实例
2014/03/06 Javascript
使用js画图之正弦曲线
2015/01/12 Javascript
HTML5使用DeviceOrientation实现摇一摇功能
2015/06/05 Javascript
Angular.js中ng-include用法及多标签页面的实现方式详解
2017/05/07 Javascript
jQuery自定义多选下拉框效果
2017/06/19 jQuery
js+html获取系统当前时间
2017/11/10 Javascript
使用D3.js创建物流地图的示例代码
2018/01/27 Javascript
微信小程序如何获取手机验证码
2018/11/04 Javascript
详解Vue2 添加对scss的支持
2019/01/02 Javascript
深入浅析nuxt.js基于ssh的vue通用框架
2019/05/21 Javascript
jQuery实现高级检索功能
2019/05/28 jQuery
解决antd 表单设置默认值initialValue后验证失效的问题
2020/11/02 Javascript
python实现简单socket通信的方法
2016/04/19 Python
详解如何用OpenCV + Python 实现人脸识别
2017/10/20 Python
python中利用h5py模块读取h5文件中的主键方法
2018/06/05 Python
Python实现的绘制三维双螺旋线图形功能示例
2018/06/23 Python
Python3爬虫学习之将爬取的信息保存到本地的方法详解
2018/12/12 Python
python中的数据结构比较
2019/05/13 Python
Python 堆叠柱状图绘制方法
2019/07/29 Python
Python函数默认参数常见问题及解决方案
2020/03/26 Python
Python通过字典映射函数实现switch
2020/11/06 Python
在线购买澳大利亚设计师手拿包和奢华晚装手袋:Olga Berg
2019/03/20 全球购物
文明教师事迹材料
2014/01/16 职场文书
七年级历史教学反思
2014/02/05 职场文书
常务副总经理岗位职责
2014/04/12 职场文书
python基于scrapy爬取京东笔记本电脑数据并进行简单处理和分析
2021/04/14 Python
vue+springboot实现登录验证码
2021/05/27 Vue.js