1

在下面的代码中,我将图像标签附加到 div。当图像完成加载(成功)后,我想在更改页面之前运行其他功能。

var $img = $("<img src='https://www.example.com/path' />").on('load', function() {
         console.log('img loaded');
         //do other stuff
         window.location = "otherpage.com";
         return true;
    });

    $(".imgContainer").append($img);

如果图像实际存在于所提供的 URL 中,或者没有被阻止,则此方法非常有效。(就我而言,net::ERR_TUNNEL_CONNECTION_FAILED由于我的网络代理设置而附加图像时出现错误。在其他网络上,它工作正常。)

我的问题是,如何测试.on('load') 回调中的错误404 (Not Found)或错误?net::ERR_TUNNEL_CONNECTION_FAILED

尝试检查responseText, textStatus, req回调中的参数,但显然由于从未加载 img,因此永远不会调用回调。未启用 CORS。

4

1 回答 1

3

用于on('error', handler)捕获 404

var $img = $("<img src='https://www.example.com/path' />").on('load', function() {
     console.log('img loaded');

}).on('error', function(event){

      console.log('img failed to load');
      console.log(event)
})
于 2019-07-18T19:20:41.567 回答