不能执行已释放script的代码

“当一个页面关闭时会自动释放页面的js”

检查程序是否有页面的关闭或转向

场景:页面有a和b两个框架页iframe,在b页面中通过js将一个函数引用(函数指针)传入到a页面并保存在a页面的一个变量中,a页面可以通过这个引用操作b页面或执行b页面的一些程序,记住:此时在a页面中的变量保存的是b页面某函数的指针(内存地址),当b页面刷新或重定向后由于b页面重新构建,所以b页面中的函数指针就发生了变化,但a中仍然保存着b页面刷新前传过来的指针(内存地址),这时a页面中变量通过所指向的指针地址就无法访问到b页面中对应的函数了(因为函数指针地址已经发生了变化,及原来的内存指针已经释放),这样在执行时就会出现“不能执行已经释放的Script代码”的错误。

解决办法:在a页面中加上容错处理,当引用出现错误时要将保存的引用(函数指针)清空或指向一个默认的函数。另外在b页面再次载入时要重新给a页面传送函数引用,这样就不会出现这样的错误了。

时间: 2024-08-04 11:25:01

不能执行已释放script的代码的相关文章

IE 不能执行已释放script的代码

从Dom中删除IFrame后,IE9+会回收内存.影响范围:适用于 Internet Explorer 9 以及更高版本. 场景(相当隐蔽!!!): 在主页面定义一个全局变量,然后让子页面IFrame内的操作去更新这个值. 1 //主页面 2 top.G_config = {}; //定义了一个全局变量 1 //IFrame页面 2 3 //操作全局变量 4 if('undefined' == typeof(top.G_config['url_list'])){ 5 top.G_config['

SCRIPT5011:不能执行已释放Script的代码

环境:win7 64位 IE9 错误:SCRIPT5011:不能执行已释放Script的代码. 现象:在父窗体的close()中调用嵌套的iframe页面的js方法返回一个对象时抛此异常. 原因:在一个iframe中定义对象,在这个iframe被删除后,方法执行的环境丢失,就会报这个错误 我的解决办法:直接在父窗体定义对象,在子窗体中调用父窗体中定义的对象并赋值.

WdatePicker 没有权限 不能执行已释放 Script 的代码

提示 拒绝访问 或 没有权限 或 ' Window.document 或 '$dp' 为空或不是对象 $dp.dd is undefined 之类的错误 SCRIPT70: 没有权限 WdatePicker.jsSCRIPT5011: 不能执行已释放 Script 的代码 解决方法: 下载最新版本下载1: http://files.cnblogs.com/my97/My97DatePicker.7z下载2: http://files.cnblogs.com/my97/My97DatePicker

Entity Framework 出现 "此 ObjectContext 实例已释放,不可再用于需要连接的操作" 的错误

原因 Entity的导航属性在View中使用,但是该Entity所在的Context已经在Controller中通过 using 释放掉:但是Entity又具有Deferred Query Evaluation性质,因此,导航属性对象没有被加载,从而出现上述错误. 解决方案 解决方法一:How to: Explicitly Load Related Objects 禁用Context的Deferred Query Evaluation,然后在查询结束后手动加载所有需要的导航属性 context.

(转)C#在父窗口中调用子窗口的过程(无法访问已释放的对象)

C#在父窗口中调用子窗口的过程: 1. 创建子窗口对象 2. 显示子窗口对象 笔者的程序中,主窗体MainFrm通过菜单调用子窗口ChildFrm.在窗体中定义了子窗口对象,然后在菜单项点击事件中,加入了如下代码来创建和显示子窗口: Private childFrm myChildFrm = null; //定义子窗口对象 private void OpenChildFrmToolStripMenuItem_Click(object sender, EventArgs e) { myChildF

JQuery html API支持解析执行Javascript脚本功能实现-代码分析

JQuery html用法(功能类似innerHTML) 开发中需要使用Ajax技术来更新页面局部区域, 使用的方法是ajax获取html代码段(字符串),然后将这个html代码段作为参数,传入目标DOM(JQuery对象)的JQuery html接口,此语句执行后, 会将html代码段解释执行, 显示出html代码段描述的页面控件. 例如: <html> <head> <script type="text/javascript" src="./

已释放的栈内存

(被调)函数内的局部变量在函数返回时被释放,不应被外部引用.虽然并非真正的释放,通过内存地址仍可能访问该栈区变量,但其安全性不被保证.后续若还有其他函数调用,则其局部变量可能覆盖该栈区内容.常见情况有两种:前次调用影响当前调用的局部变量取值(函数的"遗产"):被调函数返回指向栈内存的指针,主调函数通过该指针访问被调函数已释放的栈区内容(召唤亡灵). 1 函数的"遗产" [示例1]先后连续调用Ancestor和Sibling函数,注意函数内的dwLegacy整型变量.

把dll打包到程序中并在执行时释放

(Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu 转载请标明来源) 参考文档: http://blog.sina.com.cn/s/blog_5f432e6a0100uaet.html 编写MFC程序的时候,使用dependency查看依赖时,会看到有依赖MFC的库,通常都包含如下这两个: MSCVCR100/90/80/70.dll库是一个很独立的库,它只依赖库Kenel32/kenel64 MFC100/90/80/70.dll也相对独立,依赖MS

C# Socket连接 无法访问已释放的对象

在进行Socket长连接时,若服务器或客户端出现异常时,另外一端对Socket对话进行操作时,程序会出现无法访问已释放的对象的问题.例如客户端出现问题主动断开Socket时,当服务器操作Socket时,比如主动断开Socket会话,那么程序会出现“无法方位已释放的对象”,是由于客户端的原因导致服务器和客户端的Socket已经不存在或连接已经断开,即Socket已经释放,服务器再操作服务器和客户端的Socket肯定会报错,因此在服务器或客户端一侧操作Socket时,必须首先判断Socket是否存在