You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

仅Safari出现ReferenceError: Can't find variable: lozad问题求助

解决Safari中本地lozad库无法识别的问题

问题场景

使用本地存放的lozad库实现图片懒加载,HTML代码如下:

<body>
    <!-- 内容部分(图片元素示例)... -->
    <img class="lozad" data-src="https://unsplash.it/1600/900">

    <!-- 脚本部分... -->  
    <script type="text/javascript" src="static/js/lazyload.js"></script>
    <script>
        const observer = lozad();
        observer.observe();
    </script>
</body>

其中lazyload.js已完整复制CDN上的lozad库代码,但在Safari浏览器中报错ReferenceError: Can't find variable: lozad,改用CDN引入则正常运行,需要保留本地文件的解决方案。

解决方案

  • 调整脚本模块声明与全局暴露
    从CDN获取的lozad.min.js默认是ES模块格式,Safari对模块的加载需要显式声明。修改脚本引入为模块类型:

    <script type="module" src="static/js/lazyload.js"></script>
    

    同时在lazyload.js的末尾添加一行代码,将lozad挂载到全局window对象,确保后续调用能访问到:

    window.lozad = lozad;
    
  • 验证本地文件完整性与编码
    检查lazyload.js是否完整复制了CDN的代码,避免遗漏字符或格式错误。建议重新下载CDN文件并保存为UTF-8编码,防止编码问题导致Safari无法解析。

  • 优化脚本加载顺序
    给本地脚本添加defer属性,确保脚本在DOM解析完成后执行,同时保证加载顺序的可靠性:

    <script defer src="static/js/lazyload.js"></script>
    

内容的提问来源于stack exchange,提问作者Elvis Murseli

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 06:32:04