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

当我使用<script src=“false_ip”>时,为什么不在javascript中获取“NetworkError”?

  •  0
  • samanta  · 技术社区  · 11 年前

    这是我的简单脚本,

    <script>
    window.onerror = err;
    
    var script = document.createElement('script');
    script.src = "192.186.1.1.1.1.1";
    script.onerror = err;
    document.body.appendChild(script);
    
    function err(msg, loc, a, b) {
    alert(msg + "/" + loc);
    }
    
    </script>
    

    但当我加载这个时,

    [object Event]/undefined
    

    当我在“firebug”上运行同样的程序时,我会得到详细的错误,

    NetworkError: 404 Not Found - http://localhost/XSS/192.186.1.1.1.1.1"
    

    那么,我怎样才能得到一个详细的错误呢。

    尝试catch alos不起作用

    try {
    
    var script = document.createElement('script');
    script.src = "192.186.1.1.1";
    document.body.appendChild(script);
    
    } catch(e) {
        alert(e.name);
    
    } 
    

    这种方法只适用于旧浏览器吗?

    img.src也不提供fire错误处理程序。为什么?

    var img = new Image();
     img.src="gifffff/asasa/ss" ;
    
    1 回复  |  直到 11 年前
        1
  •  1
  •   user2864740 Heinzi    11 年前

    Firebug不是代码,而是代表代理运行的浏览器诊断工具。(JavaScript无法读取firebug控制台的结果。)

    现在,对于以下情况:

    • 这个 Image.error 事件 从不说明加载失败的原因 。没有规定在HTML规范中包含“原因”;一开始就不是一个功能,从而解决了这个问题。

    • 这个 catch 不起作用,因为代码没有引发异常。

      Image仍然是Image,并且仍然可以添加到DOM中 无论资源(最终)是否加载失败。

      ( src 仍然设置为有效的URI组件-它会在无效/未知的URI方案上引发异常。)


    拥有这个 全体的 限制(在任何[图像]资源上,甚至在同一来源上) 而且 防止违反同源策略-以及恶意代码运行各种网络扫描攻击的能力。