“不能执行已释放的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对IE操作的经典代码(推荐)
Mar 10 Javascript
JavaScript运行时库属性一览表
Mar 14 Javascript
node.js中的http.createClient方法使用说明
Dec 15 Javascript
纯js实现仿QQ邮箱弹出确认框
Apr 29 Javascript
XML文件转化成NSData对象的方法
Aug 12 Javascript
jquery实现仿新浪微博带动画效果弹出层代码(可关闭、可拖动)
Oct 12 Javascript
JavaScript 浏览器兼容性总结及常用浏览器兼容性分析
Mar 30 Javascript
基于JQuery实现图片上传预览与删除操作
May 24 Javascript
javascript js 操作数组 增删改查的简单实现
Jun 20 Javascript
Angular4 中内置指令的基本用法
Jul 31 Javascript
Vue 组件间的样式冲突污染
Aug 31 Javascript
vue实现键盘输入支付密码功能
Aug 18 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 地区分类排序算法
2013/07/01 PHP
php下foreach提示Warning:Invalid argument supplied for foreach()的解决方法
2014/11/11 PHP
PHP中is_dir()函数使用指南
2015/05/08 PHP
PHP使用星号隐藏用户名,手机和邮箱的实现方法
2016/09/22 PHP
PHP文件操作实例总结
2016/09/27 PHP
PHP处理Ajax请求与Ajax跨域问题
2017/02/13 PHP
mac os快速切换多个PHP版本的方法
2017/03/07 PHP
php微信开发之关键词回复功能
2018/06/13 PHP
jQuery 1.0.2
2006/10/11 Javascript
简单实例处理url特殊符号&处理(2种方法)
2013/04/02 Javascript
jQuery实现的支持IE的html滑动条
2015/03/16 Javascript
jQuery监听文件上传实现进度条效果的方法
2016/10/16 Javascript
深入理解JavaScript中的块级作用域、私有变量与模块模式
2016/10/31 Javascript
jQuery向webApi提交post json数据
2017/01/16 Javascript
基于vue2.0实现的级联选择器
2017/06/09 Javascript
详解Layer弹出层样式
2017/08/21 Javascript
ajax+node+request爬取网络图片的实例(宅男福利)
2017/08/28 Javascript
自制简易打赏功能的实例
2017/09/02 Javascript
ElementUI中el-tree节点的操作的实现
2020/02/27 Javascript
python入门教程 python入门神图一张
2018/03/05 Python
python找出一个列表中相同元素的多个索引实例
2019/06/11 Python
Linux下通过python获取本机ip方法示例
2019/09/06 Python
详解Python time库的使用
2019/10/10 Python
python实现将列表中各个值快速赋值给多个变量
2020/04/02 Python
html5教你做炫酷的碎片式图片切换 (canvas)
2017/07/28 HTML / CSS
猎人靴英国官网:Hunter Boots
2017/02/02 全球购物
Farfetch台湾官网:奢侈品牌时尚购物平台
2019/06/17 全球购物
西班牙购买行李箱和背包网站:Maletas Greenwich
2019/10/08 全球购物
澳大利亚著名的纺织品品牌:Canningvale
2020/05/05 全球购物
创业计划书的内容步骤和要领
2014/01/04 职场文书
计算机学生的自我评价分享
2014/02/18 职场文书
起诉书格式范文
2015/05/20 职场文书
团拜会主持词
2015/07/04 职场文书
2016年中学植树节活动总结
2016/03/16 职场文书
js Proxy的原理详解
2021/05/25 Javascript
Redis实现主从复制方式(Master&Slave)
2022/06/21 Redis