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

如何在TypeScript中触发resize事件并解决initUIEvent不存在报错

报错原因
  • TypeScript 内置的 UIEvent 类型定义未收录已废弃的 initUIEvent 方法,因此在编译阶段会直接抛出类型校验错误
  • initUIEvent 本身属于 DOM 规范中已经废弃的API,现代浏览器普遍推荐直接使用事件构造函数创建事件,无需再使用 createEvent + 初始化方法的旧写法
解决方案

推荐直接删除老旧浏览器兼容分支,目前所有主流浏览器(Chrome、Firefox、Safari、Edge)都支持 Event 构造函数,简化后的代码即可正常运行,无编译报错:

trigger() {
  window.dispatchEvent(new Event('resize', { bubbles: true, cancelable: false }));
}

如果确实需要保留对极老旧浏览器的兼容,可以通过类型断言跳过 TypeScript 的类型校验:

trigger() {
  if (typeof Event === 'function') {
    window.dispatchEvent(new Event('resize'));
  } else {
    // 类型断言告知TS当前事件对象存在initUIEvent方法
    const resizeEvent = window.document.createEvent('UIEvents') as unknown as {
      initUIEvent: (type: string, bubbles: boolean, cancelable: boolean, view: Window, detail: number) => void
    };
    resizeEvent.initUIEvent('resize', true, false, window, 0);
    window.dispatchEvent(resizeEvent);
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 18:15:08