IE 运行框架页中的 JS,报错“SCRIPT5011: 不能执行已释放 Script 的代码”
Bug 如题,搜索良久,参考如下 ——
- http://www.oschina.net/question/724763_122803?sort=time
- http://www.web-tinker.com/subject/495-1.html
- http://bbs.csdn.net/topics/350088265
- http://blog.csdn.net/ocean20/article/details/7294298
- http://www.youzitool.com/index/detail/id/28.html
- http://fengfan.blog.163.com/blog/static/134786220124472115285/
- http://blog.sina.com.cn/s/blog_6ac4c6cb0101is29.html
- http://winnie825.iteye.com/blog/1843926
- http://chenys.pixnet.net/blog/post/29993042-%5Bjs%5D%5Bie%5D-%E7%84%A1%E6%B3%95%E5%9F%B7%E8%A1%8C%E5%B7%B2%E8%A2%AB%E9%87%8B%E6%94%BE%E7%9A%84-script-%E4%BB%A3%E7%A2%BC
- http://blog.csdn.net/feng_sundy/article/details/2733172
- http://www.cnblogs.com/zhouwenhong/p/3829710.html
- http://msdn.microsoft.com/zh-cn/library/ie/gg622929(v=vs.85).aspx
看完之后 总体思路 都清楚了,但尝试各种写法,其它浏览器内核各种正常,IE 却 Bug 依旧……
鄙人愚钝…… @蓝神 能点拨我一下吗?
我的使用情景是“让父页面的 JavaScript 的主要命名空间(如 jQuery)能继承到框架中的子页面”,也就是子页面无需再加载同样的 JS 文件(无需再新开辟同样大小的一块内存),可以参考这个示例。但现在只能对 IE 全系列用“笨办法”处理 ——
var IE_Ver = UA.match(/MSIE (\d)\.\d/i);
IE_Ver = IE_Ver ? Number(IE_Ver[1]) : 0;
function $TN(HTML_Elements, TagName) {
return HTML_Elements.getElementsByTagName(TagName);
}
function PagePath_IE(_BOM) {
var _PP = _BOM.document.URL;
_PP = _PP.split('/');
if (_PP.length > 3) _PP.pop();
_PP.push('');
return _PP.join('/');
}
try {
var _DOM = parent.document;
var _SE = $TN($TN(_DOM, 'head')[0], 'script');
for (var i = 2, JS_URL; i < _SE.length; i++) {
JS_URL = _SE[i].src;
if (IE_Ver < 8)
JS_URL = PagePath_IE(parent) + JS_URL;
ImportJS(JS_URL); // 自定义的 <script /> 元素创建函数
}
} catch (Err) {}