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

JavaScript出现“不能执行已释放的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就会出现这个问题了。

解决方法:
在 按 return url 的事件程序之前加入
doOK = function(){alert('good');};document.getElementById('ifrm').src='t2.html'

这样就恢复了doOK函数指向的不存在的指针。有问题回复。

分享到:
评论

相关推荐

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

    "不能执行已释放的Script代码"这一错误是Web开发中常见的JavaScript问题,主要涉及到JavaScript的内存管理和函数引用。错误信息通常表示尝试访问或执行已被垃圾回收机制清除的内存区域内的JavaScript代码,即试图...

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

    ### 出现“不能执行已释放的Script代码”错误的原因及解决办法 #### 错误概述 在Web开发过程中,可能会遇到一个让人头疼的问题:“不能执行已释放的Script代码”。这个错误通常出现在JavaScript环境中,特别是在...

    解决ie11 SCRIPT5011:不能执行已释放Script的代码问题

    在使用IE11浏览器进行网页开发的过程中,开发者可能会遇到一个特定的错误提示:SCRIPT5011:不能执行已释放Script的代码。这个问题通常发生在父页面中嵌套有iframe子页面的场景下。错误的原因在于,父页面初始化时...

    vc 程序源代码 执行JavaScript文件中代码

    这个压缩包“vc程序源代码 执行JavaScript文件中代码”提供了一个示例,它包含了一套C++源代码,能够运行JavaScript文件中的代码。这种技术通常被称为嵌入式脚本引擎。 C++是一种静态类型的、编译式的、通用的、大...

    JavaScript错误处理

    JavaScript错误处理是编程过程中不可避免的部分,它涉及到识别、捕获和响应代码运行时可能出现的问题。本文将详细探讨JavaScript中的错误分类、处理机制以及如何有效地管理错误。 首先,我们来了解JavaScript中的...

    QT中使用QScriptEngine引擎编译运行JavaScript脚本

    QT库,作为C++开发的强大工具,提供了对多种高级...在实际项目中,可以结合标签"javascript"和"qt"进一步探索更多高级特性和应用场景,比如使用QScriptEngine进行类型转换、错误处理、异步执行以及更复杂的对象交互等。

    Javascript权威指南学习笔记二

    - 特殊情况下,还可以通过`javascript:`协议在URL中直接执行JavaScript代码。 2. **`<script>`标记详解**: - `language`和`type`属性用于指定脚本语言,默认情况下可以省略这两个属性。 - 不建议使用具体的版本...

    THScript脚本引擎1.0.0.2

    1. **脚本语言支持**:THScript引擎可能内置了一种自定义的脚本语言,或者是对已有的脚本语言(如Lua或JavaScript)进行了封装,以便开发者能够以更直观的方式编写游戏逻辑。 2. **高性能**:1.0.0.2版本强调了性能...

    用javascript代码实现限制表单文本域输入字数的功能

    ### 使用JavaScript代码实现限制表单文本域输入字数的功能 #### 背景与目标 在Web开发中,为了提高用户体验、确保数据的有效性和安全性,经常需要对用户输入的数据进行限制。例如,对于某些表单字段(如评论、留言...

    超全的javascript1.doc

    JavaScript是Web开发中不可或缺的一部分,主要用于网页交互和动态效果的实现。上述文件中涉及了一些基本的JavaScript语法和特性,包括: 1. **HTML中的JavaScript**:JavaScript代码通常嵌入在HTML文档的`<script>`...

    delphi调用v8引擎.zip

    V8引擎则是Google开发的一个开源JavaScript运行时环境,广泛应用于Chrome浏览器和Node.js服务器端JavaScript执行。"delphi调用v8引擎.zip"这个压缩包文件很可能是提供了一个示例或教程,展示了如何在Delphi项目中...

    vc执行脚本

    在VC(Visual C++)开发环境中,执行脚本通常指的是利用C++代码调用外部脚本引擎,如VBScript或JavaScript,来运行脚本代码。这样的功能在许多应用场景中非常有用,比如自动化测试、插件扩展或者在C++程序中嵌入动态...

    javascript 学习笔记

    - 数组长度:可以动态修改,`delete`操作不会减少数组长度,只会删除值,不释放空间。 - 数组索引:索引必须是非负整数,使用非整数创建的属性将成为数组对象的属性,而非数组元素。 在学习JavaScript时,理解...

    vc运行js脚本demo,可以加载类函数

    6. **错误处理**:在执行过程中,需要捕获和处理可能出现的错误,比如语法错误、运行时错误等。 7. **释放资源**:当不再需要JavaScript引擎时,记得正确地清理和释放分配的资源,避免内存泄漏。 "ScriptDemo"这个...

    JavaScript打开客户端exe文件的代码

    传统的JavaScript是运行在浏览器环境中的,受限于安全策略,不能直接访问用户的本地文件系统或者调用本地的应用程序。然而,在早期的Internet Explorer浏览器中,通过使用`ActiveXObject`对象,我们可以实现这一功能...

    java代码生成器.pdf

    这里使用了异常处理机制来捕获并打印任何可能出现的IOException,确保即使在出现错误的情况下也能正确关闭流。 最后,`main`方法在第80行定义,调用`createHtml`方法启动代码生成过程。这使得这个Java程序可以独立...

    Dynamic-Text-.rar_javascript

    例如,可以监听`keyup`事件,每当用户释放一个按键时,执行相应的函数: ```javascript document.getElementById('dynamicTextBox').addEventListener('keyup', function() { var userInput = this.value; // 获取...

Global site tag (gtag.js) - Google Analytics