问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

不能执行已释放 Script 的代码 是怎样引起的

发布网友 发布时间:2022-05-16 16:10

我来回答

2个回答

懂视网 时间:2022-05-16 20:32

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

热心网友 时间:2022-05-16 17:40

页面之间传递对象的时候,子页面new的对象(所有对象,除了字符串)会在子页面关闭时释放,所有在父页面对这个对象的引用(注意是“引用”,就算你将该对象赋值给父页面的对象,还是对它的引用)操作都将产生这个js错误。
最好的避免办法就是在父页面把所有对象都建好,在子页面给这些对象进行字符串赋值,如果子页面产生的对象数量是不定的,可以使用json把要回传的数据转为字符串,在父页面重新组装。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
可以用电高压锅做蛋糕吗 蛋糕机选哪家实惠? 京东闪付开通后无法添加到applepay怎么办 二年级数学说课稿范文 苹果手机电充到80就不充了怎么回事 上有八,下有八中间有个十字花打一字 ...排名22000.能否上到广工的机械制造和自动化(卓越工程师班)_百度知 ... 把内存由DDR2升级到DDR3,是不是要设置什么东东啊。 怎样吧DDR2的内存条改成DDR3 ...的内存条是DDR2的,我想换DDR3的可以吗?该怎么换?还有该注意什么... 拳皇97怎么调出隐藏人物 拳皇97怎么调隐藏人物? 拳皇97如何才能调出隐藏人物? 97拳皇怎么调出隐藏人物来 拳皇97如何调出隐藏人物 邮政快递电话怎么查询 拳皇97隐藏人物怎么调 拳皇97隐藏人物怎么选? 拳皇97隐藏人物调法和按键问提 拳皇97怎么调出隐藏人物.??? 求推荐高中议论文素材书 拳皇97怎么调隐藏人物 我现在写议论文经常缺一些素材,有什么参考的读物可以推荐一下吗? 拳皇97电脑版隐藏人物怎么选出 97格斗用电脑怎么调隐藏人物? 拳皇97隐藏人物怎么调? 请问这是美利达什么型号的? 和xtc800plus档次差不多的美利达什么型号 田子昌的画在除了北京其它城市有吗? 亚洲有些什么国家 PSP中拳皇97隐藏人物怎么调 氯漂粉 氧漂粉 彩漂粉 漂白粉 双氧水 有什么区别?洗衣房产品中双氧水的浓度一般是多少 洗衣店可以使用的还原剂都有哪些? 漂白衣服可以用碳酸氢钠片吗 美利达的介绍 美利达哪个系列好 84消毒液泡衣服消毒,被漂白了。有什么其他好的消毒液啊。 用鲁大师检测出c盘有64个坏道,如何修复? 我用DiskGenius检测到C盘有坏道,但是不能修复系统所在盘,请问怎样才能修复坏道? 磁盘有坏道 求高手帮忙修复或者解决? 本人不是小白不懂,刚刚用鲁大师检查了下 有几百M的坏道吧 基金定投买股票型的还买混合型的,它们那个好啊??? 请问长期定投股票型还是混合型基金 说说长期定投股票型还是混合型基金 为了攒钱,我在工行打算做了基金定投,不知道买混合型基金好还是股票型基金,请高手指导!!谢谢!! 什么软件可以找到价值索取 这个扩容盘怎么修复? 扩容盘修复,U盘扩容盘如何修复吗? 怎么修复U盘,扩容 怎样组装电脑主机好,电脑高手说下。 电脑主机需要什么组装好?