首页 » 水哥专栏 » IE 运行框架页中的 JS,报错“SCRIPT5011: 不能执行已释放 Script 的代码”

IE 运行框架页中的 JS,报错“SCRIPT5011: 不能执行已释放 Script 的代码”

Bug 如题,搜索良久,参考如下 ——

  1. http://www.oschina.net/question/724763_122803?sort=time
  2. http://www.web-tinker.com/subject/495-1.html
  3. http://bbs.csdn.net/topics/350088265
  4. http://blog.csdn.net/ocean20/article/details/7294298
  5. http://www.youzitool.com/index/detail/id/28.html
  6. http://fengfan.blog.163.com/blog/static/134786220124472115285/
  7. http://blog.sina.com.cn/s/blog_6ac4c6cb0101is29.html
  8. http://winnie825.iteye.com/blog/1843926
  9. 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
  10. http://blog.csdn.net/feng_sundy/article/details/2733172
  11. http://www.cnblogs.com/zhouwenhong/p/3829710.html
  12. 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) {}