一定要坚持下去的前端面试题--HTML

322 阅读1分钟

1. 如何监听html外链资源加载失败

方案一: 当资源(如img或者script)加载失败时,加载资源的元素会触发一个Event接口的error事件,并执行该元素上的onerror()处理函数。

<script onerror="onError(this)"></script>

方案二:window.addEventListener 因为onerror事件并不会向上冒泡,所以window.onerror接收不到加载失败的错误。但是可以通过捕获的方式全局监听加载失败的错误,虽然这也监控到了脚本错误,但可以通过判断筛选出加载失败的错误。

window.addEventListener('error', (event) => {
    if (!(event instance ErrorEvent)) {
        // 加载失败
    }
    
    // 判断也可通过target来筛选
    const target = event.target|| event.srcElement;
    const isElementTarget = target instanceof HTMLScriptElement || target instanceof HTMLLinkElemnt || target instanceof HTMLImageElement;
    if (!isElementTarget) return;
    // 获取资源地址
    const url = target.src || target.href;
}, true)