“不能执行已释放的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入门——事件切换之toggle()方法应用介绍
Feb 05 Javascript
JS代码同步文本框内容的实例方法
Jul 12 Javascript
JavaScript实现的链表数据结构实例
Apr 02 Javascript
javascript常用函数(2)
Nov 05 Javascript
Perl Substr()函数及函数的应用
Dec 16 Javascript
js简单实现调整网页字体大小的方法
Jul 23 Javascript
Angular的事件和表单详解
Dec 26 Javascript
jQuery中的siblings()是什么意思(推荐)
Dec 29 Javascript
利用C/C++编写node.js原生模块的方法教程
Jul 07 Javascript
ng-alain表单使用方式详解
Jul 10 Javascript
js实现移动端tab切换时下划线滑动效果
Sep 08 Javascript
JavaScript设计模式--简单工厂模式实例分析【XHR工厂案例】
May 23 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源代码
2006/10/09 PHP
php.ini-dist 和 php.ini-recommended 的区别介绍(方便开发与安全的朋友)
2012/07/01 PHP
php格式化日期和时间格式化示例分享
2014/02/24 PHP
Yii2 中实现单点登录的方法
2018/03/09 PHP
PHP后门隐藏的一些技巧总结
2020/11/04 PHP
div失去焦点事件实现思路
2014/04/22 Javascript
使用Jquery实现每日签到功能
2015/04/03 Javascript
JS实现自动变换的菜单效果代码
2015/09/09 Javascript
继续学习javascript闭包
2015/12/03 Javascript
纯js实现手风琴效果
2020/04/17 Javascript
BootStrap实现树形目录组件代码详解
2016/06/21 Javascript
JavaScript鼠标特效大全
2016/09/13 Javascript
Bootstrap分页插件之Bootstrap Paginator实例详解
2016/10/15 Javascript
微信小程序 教程之WXSS
2016/10/18 Javascript
Bootstrap复选框和单选按钮美化插件(推荐)
2016/11/23 Javascript
新闻上下滚动jquery 超简洁(必看篇)
2017/01/21 Javascript
Angular多选、全选、批量选择操作实例代码
2017/03/10 Javascript
详解用Webpack与Babel配置ES6开发环境
2019/03/12 Javascript
改变layer confirm弹窗按钮的颜色方法
2019/09/12 Javascript
python利用paramiko连接远程服务器执行命令的方法
2017/10/16 Python
利用python爬取斗鱼app中照片方法实例
2017/12/03 Python
解析Python中的eval()、exec()及其相关函数
2017/12/20 Python
手把手教你python实现SVM算法
2017/12/27 Python
运动检测ViBe算法python实现代码
2018/01/09 Python
基于Python实现的微信好友数据分析
2018/02/26 Python
pandas 把数据写入txt文件每行固定写入一定数量的值方法
2018/12/28 Python
python mysql自增字段AUTO_INCREMENT值的修改方式
2020/05/18 Python
浅谈Python 参数与变量
2020/06/20 Python
Python实现我的世界小游戏源代码
2021/03/02 Python
英国在线滑雪板和冲浪商店:The Board Basement
2020/01/11 全球购物
初中生学习生活的自我评价
2013/11/20 职场文书
经典演讲稿范文
2013/12/30 职场文书
洗煤厂厂长岗位职责
2014/01/03 职场文书
书香校园活动方案
2014/02/28 职场文书
python 用递归实现通用爬虫解析器
2021/04/16 Python
Python开发五子棋小游戏
2022/04/28 Python