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

动态引入脚本后,如何在TypeScript类中调用TamaraProductWidget?

解决动态加载脚本后调用方法不生效的问题

问题核心是动态脚本是异步加载的——你刚把script标签加到body里就调用window.TamaraProductWidget.render(),此时脚本大概率还没完成下载和解析,window上还不存在TamaraProductWidget对象,自然调用失败;而控制台执行时脚本早已加载完毕,所以能正常运行。

下面是具体的解决步骤:

1. 监听脚本加载完成事件,再执行方法

修改TypeScript中动态加载脚本的代码,给script标签添加onload回调,确保脚本加载完成后再调用render方法:

this.myScriptElement = document.createElement("script");
this.myScriptElement.src = "https://.....-widget.min.js";
// 脚本加载完成后执行渲染逻辑
this.myScriptElement.onload = () => {
  if (window.TamaraProductWidget) {
    window.TamaraProductWidget.render();
  }
};
// 可选:处理脚本加载失败的情况
this.myScriptElement.onerror = () => {
  console.error("Tamara Widget脚本加载失败");
};
document.body.appendChild(this.myScriptElement);

2. 解决TypeScript类型报错

TypeScript默认不识别window上的TamaraProductWidget属性,直接编写会触发类型错误。你可以在项目的任意.d.ts文件(比如global.d.ts)中扩展Window接口:

interface Window {
  TamaraProductWidget?: {
    render: () => void;
  };
}

添加这段声明后,TypeScript就不会再提示相关类型错误了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 03:48:11