代码之家  ›  专栏  ›  技术社区  ›  Peter

使Internet Explorer 8崩溃的简单网页

  •  1
  • Peter  · 技术社区  · 14 年前

    <!doctype html>
    
    <head>
    <title>Crashes IE8 on Win7</title>
    <style>
    article { display: block; }
    </style>
    <script>
    document.createElement('article');
    document.createElement('nav');
    
    function initialize() {
        var map = new google.maps.Map(document.getElementById("map_canvas"), {});
    }
    
    function loadScript() {
        var script = document.createElement("script");
        script.type = "text/javascript";
        script.src = "http://maps.google.com/maps/api/js?sensor=false&callback=initialize";
        document.body.appendChild(script);
    }
    
    window.onload = loadScript;
    </script>
    </head>
    <body>
    
    <nav><ul><li>
        <div id="map_canvas"></div>
        <article>
    </li></ul></nav>
    
    </body>
    

    唯一的 真实的 页面中的bug,是否缺少 </article> 标签。剩下的都是制造IE崩溃所必需的。我肯定我可以通过分解googlemapsapi进一步缩小范围,但这对我来说有点太过分了。

    其他人能复制这个吗,或者他们的一些奇怪的配置只适用于我测试过的所有机器?

    正在查找我的代码的修复程序。(解决方法是:添加缺少的 </文章> 我在看这是否会使Win7上的IE8也崩溃,也许我应该在某个地方报告,因为我知道崩溃通常可以用来控制受害者的计算机。

    2 回复  |  直到 14 年前
        1
  •  0
  •   Community CDub    8 年前

    我可以在Windows7上用IE8复制你的问题。很可能与 this post 这表明问题是由于试图在页面完成加载之前修改元素引起的。如果是这种情况,您可以通过在页面完成加载后使用jQuery调用loadScript方法来解决问题。例如。

    <script>
        $().ready(function() {
            loadScript();
        });
    </script>
    
        2
  •  0
  •   Space Monkey    14 年前

    尝试将脚本下移到页面底部。

    我还要整理一下:

    • 删除正文中的非html代码
    • 添加开始和结束html标记

    这对我很有用:

    <!doctype html>
    <html>
    <head>
    <title>Crashes IE8 on Win7</title>
    <style type="text/css">
    article { display: block; }
    </style>
    
    </head>
    <body>
    
    <div id="map_canvas"></div>
    
    <script type="text/javascript">
    document.createElement('article');
    document.createElement('nav');
    
    function initialize() {
        var map = new google.maps.Map(document.getElementById("map_canvas"), {});
    }
    
    function loadScript() {
        var script = document.createElement("script");
        script.type = "text/javascript";
        script.src = "http://maps.google.com/maps/api/js?sensor=false&callback=initialize";
        document.body.appendChild(script);
    }
    window.onload = loadScript;
    </script>
    </body>
    </html>
    
    推荐文章