【问题标题】:Abort javascript loading on network error网络错误中止javascript加载
【发布时间】:2016-05-05 22:19:47
【问题描述】:

我们使用异步 iframe 下的小部件在合作伙伴网站上运行我们的应用程序。

我们的一台服务器无法从某些网络访问,并且一些用户声称连续“从 our.domain.com 加载...”,从而直接干扰用户体验。

发生网络错误时可以中止资源加载吗?

我们的环境不能依赖任何外部库(如 jquery、zepto、...)。我们的代码是用原始 javascript 编写的。

我们尝试在超时后删除 javascript 元素,就像在 SO 上的一些资源中描述的那样,但没有人工作。

这里是测试代码的一个sn-p。如果

setTimeout(
    function(){
        //Check if it is ready using a control var
        if (! contextControl.isReady){
            // Not Ready
            var trgt = document.getElementById("element-id");
            //force element drop
            trgt.parentNode.removeChild(trgt);
        }
    }, 1000
);

它有效地删除了 javascript 元素,但不会中止资源加载。

有一些有效的方法可以中止这个资源加载吗?

【问题讨论】:

    标签: javascript widget failover


    【解决方案1】:

    我会尝试使用带有错误处理的异步加载:

    $.getScript( "ajax/test.js" )
      .done(function( script, textStatus ) {
        console.log( textStatus );
      })
      .fail(function( jqxhr, settings, exception ) {
        $( "div.log" ).text( "Triggered ajaxError handler." );
    });
    

    http://api.jquery.com/jQuery.getScript/

    【讨论】:

    • 我忘了建议。我们不在客户网站上使用 jquery。我们删除了这个依赖。
    • 脚本注入功能正常。在出现一些网络问题后,我们遇到了中止脚本加载的问题。它类似于您在上面编写的 .fail() 调用。但是,我们需要的是诸如超时控制和浏览器脚本加载中断之类的东西。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-08
    • 2014-12-17
    • 2017-12-22
    • 2021-09-15
    • 2021-12-25
    • 1970-01-01
    相关资源
    最近更新 更多