“不能执行已释放的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高级程序设计 阅读笔记(七) ECMAScript中的语句
Feb 27 Javascript
jquery 显示*天*时*分*秒实现时间计时器
May 07 Javascript
深入理解JavaScript系列(34):设计模式之命令模式详解
Mar 03 Javascript
jquery实现标签支持图文排列带上下箭头按钮的选项卡
Mar 14 Javascript
浅析node连接数据库(express+mysql)
Nov 30 Javascript
JavaScript读二进制文件并用ajax传输二进制流的方法
Jul 18 Javascript
vue中如何实现变量和字符串拼接
Jun 19 Javascript
Node中使用ES6语法的基础教程
Jan 05 Javascript
解决使用Vue.js显示数据的时,页面闪现原始代码的问题
Feb 11 Javascript
Vue2.2.0+新特性整理及注意事项
Aug 22 Javascript
vue使用map代替Aarry数组循环遍历的方法
Apr 30 Javascript
vue动态设置路由权限的主要思路
Jan 13 Vue.js
超强的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
我的论坛源代码(一)
2006/10/09 PHP
浅谈mysql_query()函数的返回值问题
2016/09/05 PHP
php使用curl伪造来源ip和refer的方法示例
2018/05/08 PHP
基于PHP实现生成随机水印图片
2020/12/09 PHP
jquery autocomplete自动完成插件的的使用方法
2010/08/07 Javascript
基于jQuery的图片剪切插件
2011/08/03 Javascript
Ajax执行顺序流程及回调问题分析
2012/12/10 Javascript
javascript函数定义的几种区别小结
2014/01/06 Javascript
JavaScript计算两个日期时间段内日期的方法
2015/03/16 Javascript
Actionscript与javascript交互实例程序(修改)
2016/09/22 Javascript
js学习笔记之事件处理模型
2016/10/31 Javascript
JS 全屏和退出全屏详解及实例代码
2016/11/07 Javascript
Centos6.8下Node.js安装教程
2017/05/12 Javascript
vue组件初学_弹射小球(实例讲解)
2017/09/06 Javascript
详解基于iview-ui的导航栏路径(面包屑)配置
2019/02/22 Javascript
python爬虫的工作原理
2017/03/05 Python
Python学习小技巧之列表项的排序
2017/05/20 Python
python 简单的绘图工具turtle使用详解
2017/06/21 Python
python+selenium开发环境搭建图文教程
2017/08/11 Python
Python数据结构与算法之二叉树结构定义与遍历方法详解
2017/12/12 Python
python 将数据保存为excel的xls格式(实例讲解)
2018/05/03 Python
Python实现SQL注入检测插件实例代码
2019/02/02 Python
Python性能分析工具Profile使用实例
2019/11/19 Python
解决json中ensure_ascii=False的问题
2020/04/03 Python
什么是python的自省
2020/06/21 Python
Django 用户认证Auth组件的使用
2020/11/30 Python
Python Selenium破解滑块验证码最新版(GEETEST95%以上通过率)
2021/01/29 Python
美国猫狗药物和用品网站:PetCareRx
2017/01/05 全球购物
美国汽车轮胎和轮毂销售网站:Tire Rack
2018/01/11 全球购物
Coccinelle官网:意大利的著名皮具品牌
2019/05/15 全球购物
C#面试题
2016/05/06 面试题
remote接口和home接口主要作用
2013/05/15 面试题
学生就业推荐信
2013/11/13 职场文书
2014年学校法制宣传日活动总结
2014/11/01 职场文书
大班下学期个人总结
2015/02/13 职场文书
安全教育培训心得体会
2016/01/15 职场文书