“不能执行已释放的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 相关文章推荐
改进:论坛UBB代码自动插入方式
Dec 22 Javascript
WEB页子窗口(showModalDialog和showModelessDialog)使用说明
Oct 25 Javascript
使用js修改客户端注册表的方法
Aug 09 Javascript
JavaScript设计模式之外观模式介绍
Dec 28 Javascript
jQuery子属性过滤选择器用法分析
Feb 10 Javascript
jquery实现二级导航下拉菜单效果
Dec 18 Javascript
jquery实现倒计时功能
Dec 28 Javascript
vue中axios解决跨域问题和拦截器的使用方法
Mar 07 Javascript
JS实现的DOM插入节点操作示例
Apr 04 Javascript
Vue项目结合Vue-layer实现弹框式编辑功能(实例代码)
Mar 11 Javascript
es6函数之箭头函数用法实例详解
Apr 25 Javascript
Vant+postcss-pxtorem 实现浏览器适配功能
Feb 05 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 ajax 静态分页过程形式
2011/09/02 PHP
thinkphp微信开发(消息加密解密)
2015/12/02 PHP
详解js异步文件加载器
2016/01/24 PHP
PHP实现数据分页显示的简单实例
2016/05/26 PHP
php中preg_replace_callback函数简单用法示例
2016/07/21 PHP
php判断str字符串是否是xml格式数据的方法示例
2017/07/26 PHP
javascript Ext JS 状态默认存储时间
2009/02/15 Javascript
JavaScript在多浏览器下for循环的使用方法
2012/11/07 Javascript
jquery动态添加删除div 具体实现
2013/07/20 Javascript
jQuery事件之键盘事件(ctrl+Enter回车键提交表单等)
2014/05/11 Javascript
Nodejs实战心得之eventproxy模块控制并发
2015/10/27 NodeJs
JS运动相关知识点小结(附弹性运动示例)
2016/01/08 Javascript
AngularJS上拉加载问题解决方法
2016/05/23 Javascript
将List对象列表转换成JSON格式的类实现方法
2016/07/04 Javascript
使用canvas及js简单生成验证码方法
2017/04/02 Javascript
浅谈Webpack 是如何加载模块的
2018/05/24 Javascript
微信小程序canvas实现刮刮乐效果
2018/07/09 Javascript
JavaScript原型对象原理与应用分析
2018/12/27 Javascript
JS实现音乐导航特效
2020/01/06 Javascript
复制粘贴功能的Python程序
2008/04/04 Python
Python中3种内建数据结构:列表、元组和字典
2014/11/30 Python
对python多线程中互斥锁Threading.Lock的简单应用详解
2019/01/11 Python
Python异常处理知识点总结
2019/02/18 Python
django框架ModelForm组件用法详解
2019/12/11 Python
使用pickle存储数据dump 和 load实例讲解
2019/12/30 Python
django使用channels实现通信的示例
2020/10/19 Python
Internal修饰符有什么含义
2013/07/10 面试题
夜大毕业自我鉴定
2013/10/11 职场文书
财务出纳岗位职责
2014/02/03 职场文书
火锅店营销方案
2014/02/26 职场文书
七匹狼男装广告词
2014/03/21 职场文书
大学生党员自我评价范文
2014/04/09 职场文书
祖国在我心中演讲稿500字
2014/05/04 职场文书
新学期开学演讲稿
2014/05/24 职场文书
学校中秋节活动总结
2015/03/23 职场文书
56句经典英文座右铭
2019/08/09 职场文书