V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
firhome
V2EX  ›  程序员

如何实现一个文件(js)超时后就自动跳过?

  •  
  •   firhome · 2020-11-06 13:38:22 +08:00 · 2039 次点击
    这是一个创建于 1482 天前的主题,其中的信息可能已经有所发展或是发生改变。
    是这样的, 页面引入了 a.js ( src 外链)

    页面逻辑里有用到 a.js 的东西,但是有时候这个 a.js 网络不稳定,造成页面一直在白屏。

    请问有没有办法 知道 a.js 超时的时候 自动跳过呢?
    11 条回复    2020-11-06 16:38:48 +08:00
    cat
        1
    cat  
       2020-11-06 13:41:55 +08:00 via iPhone
    看看 async / defer 属性
    azcvcza
        2
    azcvcza  
       2020-11-06 13:54:58 +08:00
    是我的话,可能就设置一个定时器去监听有没有加载好;搜了一下别人的解决方案,也有把尝试自己创建 script,利用自带的 document.readyState 回调,来接下去执行
    kile
        3
    kile  
       2020-11-06 13:59:04 +08:00
    a.js 搞到本地不行?非要用外链?
    youla
        4
    youla  
       2020-11-06 14:07:27 +08:00
    反向代理 a.js
    fengpan567
        5
    fengpan567  
       2020-11-06 14:12:11 +08:00
    3 楼说得对
    Track13
        6
    Track13  
       2020-11-06 14:22:06 +08:00 via Android
    超时后就自动 error 了吧。你是想要在设定时间内没有加载就跳过吧。
    3 楼说的对
    xiangyuecn
        7
    xiangyuecn  
       2020-11-06 14:23:15 +08:00
    手动创建 script,script.onload 时执行和这个 js 相关的业务。加载不成功天然跳过
    vision1900
        8
    vision1900  
       2020-11-06 14:24:17 +08:00   ❤️ 1
    白屏是因为下载和解析 JS 造成了 render blocking,浏览器会停止 DOM 的构建等着这 2 件事情完成
    加个 defer 属性就完了,或者不放在 head 里,放到 body 最后
    有时间可以看下浏览器渲染过程,反正以后面试也要被问到
    learningman
        9
    learningman  
       2020-11-06 16:11:16 +08:00 via Android
    ajax 然后 insert dom,设个 timeout
    vvong
        10
    vvong  
       2020-11-06 16:13:54 +08:00
    <script src="http://lib.sinaapp.com/js/jquery11/1.8/jquery.min.js"></script>
    <script>window.jQuery || document.write('<script src="jquery1.8.min.js">\x3C/script>')</script>

    应该是和 cdn 加载 jq 一样的道理吧
    Curtion
        11
    Curtion  
       2020-11-06 16:38:48 +08:00
    如果 a.js 不重要的话用 defer 延迟加载。但是如果不重要为何不直接删了它呢,如果它有用不能删除的话那么提高网络稳定性来解决比较好。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3104 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 14:23 · PVG 22:23 · LAX 06:23 · JFK 09:23
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.