不能执行已释放script的代码
”从Dom中删除IFrame后,IE9+会回收内存。影响范围:适用于 Internet Explorer 9 以及更高版本。“
1. 应用场景(相当隐蔽!!!)
在主页面定义一个全局变量,然后让子页面IFrame内的操作去更新这个值。
1 //主页面
2 top.G_config = {}; //定义了一个全局变量
1 //IFrame页面
2
3 //操作全局变量
4 if('undefined' == typeof(top.G_config['url_list'])){
5 top.G_config['url_list'] = [];
6 }
7 top.G_config['url_list'].push('something');
8 //操作完以后,关闭此IFrame
看起来基本上没什么问题,但是这个IFrame页面时包含在一个弹出窗里面,操作完之后,就会从Dom中移除这个IFrame。有没有注意这行代码:
1 top.G_config['url_list'] = [];
在IFrame中为全局变量top.G_config创建了一个数组,而数组在JS中是一个复杂类型对象。因此,一个全局变量引用了IFrame中创建的一个数组,而这个数组会在IFrame被移除Dom的时候,同时被回收。当第二次打开弹出窗去操作这个全局变量的时候就会报错:不能执行已释放script的代码
2. 如何避免这个问题
1 //主页面
2 top.G_config = {‘url_list’: []}; //定义了一个全局变量
1 //IFrame页面
2
3 //操作全局变量
4 top.G_config['url_list'].push('something');
5
6 //操作完以后,关闭此IFrame
思路:在IFrame页面更新全局变量,避免涉及到值引用问题。
使用JS编码时,尽量不要使用全局变量。无法避免时,一定要慎重,要考率到IFrame中更新全局变量时,不要存在引用关系。
这个Bug非常具有隐蔽性。
不能执行已释放script的代码的更多相关文章
- SCRIPT5011:不能执行已释放Script的代码
环境:win7 64位 IE9 错误:SCRIPT5011:不能执行已释放Script的代码. 现象:在父窗体的close()中调用嵌套的iframe页面的js方法返回一个对象时抛此异常. 原因:在一 ...
- WdatePicker 没有权限 不能执行已释放 Script 的代码
提示 拒绝访问 或 没有权限 或 ' Window.document 或 '$dp' 为空或不是对象 $dp.dd is undefined 之类的错误 SCRIPT70: 没有权限 WdatePic ...
- 解决IE11出现异常SCRIPT5011:不能执行已释放Script的代码
功能概述: 最近做了一个教育科研系统,由于时间比较紧,所以能集成的功能都尽量做到了一起,其中一个上传附件的功能,在基类控制器BaseController 中建了一个Action返回视图,其他需要上传附 ...
- IE9出现异常SCRIPT5011:不能执行已释放Script的代码
今天同事测试系统,突然出现一个异常SCRIPT5011:不能执行已释放Script的代码 应用场景:用模态方式打开个窗口,对于返回对象使用"=="与字符串比较时出现错误 我也用我的 ...
- ie11 SCRIPT5011:不能执行已释放Script的代码
依照我遇到的问题为例: (我的页面结构为:父页面中嵌套有iframe子页面) 1.造成这种情况的原因是:父页面初始化声明变量a为数组(数组对象是引用类型,赋值传递的是地址),创建iframe子页面后给 ...
- ie中报错---不能执行已释放 Script 的代码
我的原因:使用jquery.colorbox.js.在页面中使用弹框,对于父页面中的变量进行修改(弹框页面的js--window.parent.obj.arr= 数组;), 当弹框关闭之后,在父页面中 ...
- IE浏览器下错误,不能执行已释放script的代码
错误提示: 错误原因: 我使用layui打开子页面,用到了父页面中的一个全局变量(我用的数组),子页面关闭后,使用该数组方法(如:arr.join(",")),便提示此错误 我的解 ...
- 出现“不能执行已释放的Script代码”错误的原因及解决办法
很多web开发者或许都遇到过这样的问题,程序莫名奇怪出现“不能执行已释放Script的代码”,错误行1,列1.对于这种消息描述不着边,行列描述更是让人迷茫的js错误,相信是所有调试js程序的朋友们最郁 ...
- IE10弹窗showModalDialog关闭之后提示SCRIPT5011:不能执行已释放的Script代码
在Web开发中,经常使用showModalDialog弹窗 今天遇到一个小问题,IE10中弹窗关闭之后提示SCRIPT5011:不能执行已释放的Script代码 网上搜罗了一些资料,发现大多都提到对象 ...
随机推荐
- 高效算法——Most financial institutions 贪心 H
H - 贪心 Crawling in process... Crawling failed Time Limit:3000MS Memory Limit:0KB 64bit IO Fo ...
- Nightmare(搜索)
http://acm.hdu.edu.cn/showproblem.php?pid=1072 /* 题意: 迷宫内有入口和出口 在6分钟结束后炸弹会爆炸,但是迷宫内有重置炸弹的装置,可以重置炸弹的时间 ...
- [Locked] Two Sum
Two Sum II - Input array is sorted Given an array of integers that is already sorted in ascending or ...
- openStack controller 管理网口TX数据量非常大 网络总是丢包
- Java三十个面试题总结
都是一些非常非常基础的题,是我最近参加各大IT公司笔试后靠记忆记下来的,经过整理献给与我一样参加各大IT校园招聘的同学们,纯考Java基础功底,老手们就不用进来了,免得笑话我们这些未出校门 ...
- 设计模式----代理模式(Proxy)
为还有一个对象提供一个替身或占位符以控制对这个对象的訪问. 代理模式的组成: 主题接口(Subject):提取真正主题与代理的公共方法,让使用真正主题的地方也能用代理取代. 真正主题(RealSubj ...
- 【Cocos2d-X开发学习笔记】第29期:游戏中数据的存储(上)
本系列学习教程使用的是cocos2d-x-2.1.4(最新版为3.0alpha0-pre) ,PC开发环境Windows7,C++开发环境VS2010 一般游戏中都需要记录玩家数据,便于玩家下次登录时 ...
- python 参议院文本预处理的一维数组的间隔空间
#!/usr/bin/python import re def pre_process_msg ( msgIn ): if msgIn=="": retur ...
- 搜搜(www.soso.com),I 老虎油!
搜搜(www.soso.com),I 老虎油! 太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用 ...
- 有向图的欧拉路径POJ2337
每个单词可以看做一条边,每个字母就是顶点. 有向图欧拉回路的判定,首先判断入度和出度,其实这个题判定的是欧拉通路,不一定非得构成环,所以可以有一个点的顶点入度比出度大1,另外一个点的出度比入度大1,或 ...