“不能执行已释放的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 相关文章推荐
使用prototype.js 的时候应该特别注意的几个问题.
Apr 12 Javascript
爱恋千雪-US-AscII加密解密工具(网页加密)下载
Jun 06 Javascript
JavaScript实现对下拉列表值进行排序的方法
Jul 15 Javascript
详解JavaScript编程中正则表达式的使用
Oct 25 Javascript
AngularJS自动表单验证
Feb 01 Javascript
教你如何在Node.js中使用jQuery
Aug 28 Javascript
JavaScript判断浏览器对CSS3属性是否支持的多种方法
Nov 13 Javascript
Bootstrap CSS组件之面包屑导航(breadcrumb)
Dec 17 Javascript
vue cli webpack中使用sass的方法
Feb 24 Javascript
vue实现通讯录功能
Jul 14 Javascript
vue使用echarts图表的详细方法
Oct 22 Javascript
html中两种获取标签内的值的方法
Jun 16 jQuery
超强的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
改进的IP计数器
2006/10/09 PHP
php使用pclzip类实现文件压缩的方法(附pclzip类下载地址)
2016/04/30 PHP
phpfpm的作用和用法
2019/10/10 PHP
PHP使用PhpSpreadsheet操作Excel实例详解
2020/03/26 PHP
javascript 动态设置已知select的option的value值的代码
2009/12/16 Javascript
javascript判断iphone/android手机横竖屏模式的函数
2011/12/20 Javascript
js模仿html5 placeholder适应于不支持的浏览器
2013/01/13 Javascript
js实现简单选项卡与自动切换效果的方法
2015/04/10 Javascript
介绍一个简单的JavaScript类框架
2015/06/24 Javascript
js获取url传值的方法
2015/12/18 Javascript
小心!AngularJS结合RequireJS做文件合并压缩的那些坑
2016/01/09 Javascript
JavaScript函数内部属性和函数方法实例详解
2016/03/17 Javascript
原生 JS Ajax,GET和POST 请求实例代码
2016/06/08 Javascript
全面了解JavaScript对象进阶
2016/07/19 Javascript
JavaScript提高加载和执行效率的方法
2017/02/03 Javascript
微信小程序 共用变量值的实现
2017/07/12 Javascript
Angular限制input框输入金额(是小数的话只保留两位小数点)
2017/07/13 Javascript
详解Require.js与Sea.js的区别
2018/08/05 Javascript
微信小程序tab切换可滑动切换导航栏跟随滚动实现代码
2019/09/04 Javascript
Python中处理字符串的相关的len()方法的使用简介
2015/05/19 Python
老生常谈Python进阶之装饰器
2017/05/11 Python
Django Admin 实现外键过滤的方法
2017/09/29 Python
python+tkinter编写电脑桌面放大镜程序实例代码
2018/01/16 Python
Python 爬取携程所有机票的实例代码
2018/06/11 Python
Python开发的十个小贴士和技巧及长常犯错误
2018/09/27 Python
Python告诉你木马程序的键盘记录原理
2019/02/02 Python
详解Python3中ceil()函数用法
2019/02/19 Python
Python3.5常见内置方法参数用法实例详解
2019/04/29 Python
巧用 CSS3的webkit-box-reflect 倒影实现各类动效
2021/03/05 HTML / CSS
HTML5、Select下拉框右边加图标的实现代码(增进用户体验)
2017/10/16 HTML / CSS
营销与策划应届生求职信
2013/11/04 职场文书
四年大学生活的自我评价范文
2014/02/07 职场文书
行政文秘岗位职责范本
2014/02/10 职场文书
农村婚礼主持词
2014/03/13 职场文书
幼儿园运动会口号
2014/06/07 职场文书
Python之Matplotlib绘制热力图和面积图
2022/04/13 Python