`
slbszq
  • 浏览: 264045 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

“不能执行已释放的Script代码”错误的原因及解决办法

阅读更多

很多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就会出现这个问题了。

摘自:http://www.jb51.net/article/11311.htm

当时我没看太明白,不过讲的很有道理

我的问题解决办法:

http://it4j.iteye.com/blog/2172857

分享到:
评论

相关推荐

    出现“不能执行已释放的Script代码”错误的原因及解决办法

    很多web开发者或许都遇到过这样的问题,程序莫名奇怪出现“不能执行已释放Script的代码”,错误行1,列1.对于这种消息描述不着边,行列描述更是乱写的js错误,相信是所有调试js程序的朋友们最郁闷也最憎恨的事情!...

    javascript入门笔记

    碰到错误代码,会终止当前语句块的执行,但不影响后续块的执行 [removed][removed] 为一块 4、JS语法 1、语句 - 可以被JS引擎执行的最小单元 由表达式、关键字、运算符 来组成的 严格区分大小写 :name 和 ...

    KODExplorer 芒果云-资源管理器

    (data目录没有写权限会导致配置修改不能保存、不能新建用户等) [关于上传问题] 程序没有做任何限制,如果需要上传大文件,则修改 php.ini:`upload_max_filesize = 1000M post_max_size = 1000M` [关于解压缩问题]...

    易语言程序免安装版下载

    修改扩展界面支持库三,解决单击卷帘菜单后导致日期框不能弹出下拉窗口的BUG。 4. 修改XP风格支持库,解决GDI资源泄露,以及在使用通用组件库六时组合框标题出现重影的BUG。 5. 修改扩展界面支持库一,解决树形框...

    Lua解析器mLua.zip

    只有在start方法执行前,设置的数据才会生效start(String)启动lua解析器,传递的参数表示lua代码的入口文件stop()停止lua解析器并释放资源除此之外,JavaFunction也是使用者可能需要用到的接口。它表示一个lua函数的...

    入门学习Linux常用必会60个命令实例详解doc/txt

    在系统关机前使用 shutdown命令,系统管理员会通知所有登录的用户系统将要关闭,并且login指令会被冻结,即新的用户不能再登录。 halt 1.作用 halt命令的作用是关闭系统,它的使用权限是超级用户。 2.格式 halt...

    WAP 无线应用协议

    9.11 WTAI预先确定的错误代码 242 9.12 WTAI应用举例 242 第10章 无线电话应用接口规范关于 IS-136的附加说明 244 10.1 范围 244 10.2 IS-136专用库 244 10.2.1 网络事件 244 10.2.2 网络函数 244 10.2.3 发送flash...

    ZoomWebExAutoJoiner:一种自动化工具,可自动启动,交互和退出缩放会议和Webex会议。只需输入您的日程表,在后台运行该工具,就不必担心再次错过会议!

    自动执行无聊的生活将释放时间,精力并防止头痛。当此解决方案满足我的需求时,您可能会发现缺少功能或错误阻碍了脚本的使用。如果是这样,请伸出手,让我们看看我们能做什么:)当前功能日程安排很容易编辑,可以随时...

    LINGO软件的学习

    在一个模型中,原始集是基本的对象,不能再被拆分成更小的组分。原始集可以由显式罗列和隐式罗列两种方式来定义。当用显式罗列方式时,需在集成员列表中逐个输入每个成员。当用隐式罗列方式时,只需在集成员列表中...

    ioBroker.[removed]适用于JavaScript和Blockly的脚本引擎

    该适配器使用Sentry库自动向开发人员报告异常和代码错误。 有关更多详细信息以及如何禁用错误报告的信息,请参见! Sentry报告从js-controller 3.0开始使用。如何构建(仅适用于开发人员) 只需在根目录和src文件夹...

    HGE_系列教材(1-9)

    System_Launch 运行一个URL 或者外部的可执行文件或数据文件 System_Snapshot 截屏并保存到一个文件 3. 资源函数(Resource functions): Resource_Load 从硬盘上读取资源到内存中 Resource_Free 从内存中删除读取...

    (重要)AIX command 使用总结.txt

    S State ->列出指定状态的设备,3种状态可选,(1)已定义->defined,d,D,0;(2)可用->available,a,A,1;(3)停止->stopped,s,S,2; s Subclass ->指定设备的子类名称,subclass包括什么类型可用参数P显示; t Type ->指定...

    最全的oracle常用命令大全.txt

    当不能关闭数据库时,可以用startup force来完成数据库的关闭 先关闭数据库,再执行正常启动数据库命令 7、startup pfile=参数文件名 带初始化参数文件的启动方式 先读取参数文件,再按参数文件中的设置启动数据库...

Global site tag (gtag.js) - Google Analytics