`
slbszq
  • 浏览: 267824 次
  • 性别: 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程序的朋友们最郁闷也最憎恨的事情!...

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

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

    VBScript错误代码及对应解释大全

    《VBScript错误代码及对应解释大全.doc》文档应该提供了更详尽的错误代码列表和解决方案,而《使用须知.txt》则可能包含了关于如何使用这份文档的指导。建议参考这两份资料,以更全面地理解和解决VBScript编程中遇到...

    ASP的错误代码都有哪些?

    这是一个通用的错误代码,表明遇到了未预期的问题,可能需要查看更详细的错误日志以确定具体原因。 3. ASP0102 - Expecting string input:缺少字符串输入。当函数或方法期望接收字符串参数,但实际传入的不是字符...

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

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

    Wincc中编写的周期触发的全局脚本为什么不执行?.docx

    解决上述问题后,大部分情况下周期触发的全局脚本应该能正常执行。如果问题仍然存在,可能需要进一步检查Wincc的相关设置,或者联系技术支持获取专业帮助。记住,调试和解决问题的过程是提高Wincc使用技能的重要步骤...

    THScript脚本引擎1.0.0.2

    2. **高性能**:1.0.0.2版本强调了性能优化,确保在运行游戏时脚本执行的效率高,不影响整体游戏体验。 3. **易用性**:通过与MyGUI库的集成,开发者可以轻松创建和管理游戏界面,而HGE的使用则简化了底层硬件资源...

    JavaScript错误处理

    然而,仅靠`onerror`事件处理函数并不能完全解决错误处理问题,因为有些错误可能在代码执行的深层嵌套中发生,这时我们需要使用更强大的错误处理机制,如`try...catch`语句。 2. **try...catch语句**:这是一种更...

    SAP HANA SQL Script Reference

    SQL Script 支持一系列功能,包括但不限于变量管理、流程控制、异常处理等。 ##### 3.1 SQL Script 安全性考虑 SQL Script 在设计时充分考虑了安全性问题。为了保护 SAP HANA 数据库中的数据安全,SQL Script 提供...

    经典Python代码.zip

    7. **错误处理和调试**:良好的代码应该具备良好的错误处理机制,如使用`try/except`来捕获和处理异常。此外,日志记录和调试技巧也是经典Python代码中不可或缺的部分。 8. **单元测试和TDD**:Python提供了`...

    C# 执行SQL脚本

    在执行过程中,可能会遇到SQL语法错误或其他异常,需要使用try-catch语句捕获并处理: ```csharp try { // 执行SQL脚本代码 } catch (SqlException ex) { Console.WriteLine("Error executing SQL: " + ex....

    Jenkins插件:Post-Build Script Plug-in

    在持续集成环境中,Post-Build Script Plug-in能帮助提升效率,减少手动干预。通过自动化脚本,可以确保每次构建后的一致性行为,减少错误和遗漏,提高团队协作效率。 ### 五、最佳实践与注意事项 - **日志记录**...

    C/C++执行lua脚本

    例如,如果`script`文件包含我们要执行的Lua代码,我们可以使用`luaL_loadfile()`加载。 4. 运行Lua脚本: 调用`lua_pcall()`执行已加载的脚本。此函数会捕获并处理可能出现的错误。 5. 交互:C++与Lua的数据交换...

    vc执行脚本

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

    Siebel最佳代码实现

    【Siebel最佳代码实现】是关于优化Siebel系统中代码编写和执行效率的一系列最佳实践。以下是一些关键知识点的详细说明: 1. **正确使用DeleteRecord方法**:当调用业务组件(BC)的DeleteRecord方法删除记录时,系统...

    JavaBridge.jar、php-script.jar、php-servlet.jar

    3. **资源管理**:这个库还能管理PHP脚本的生命周期,如加载、执行和释放资源。 **php-servlet.jar** php-servlet.jar是专为Java Servlet容器设计的,它实现了Servlet API,使得PHP可以作为Web服务的一部分运行。...

Global site tag (gtag.js) - Google Analytics