当前位置:网站首页>如何动态添加script依赖的脚本
如何动态添加script依赖的脚本
2022-08-04 03:47:00 【行致】
如何动态添加script依赖的脚本
使用的背景
在我们平常开发中,会在HTML文件中会放置一些所依赖的脚本,但在有些情况下,区分不同的环境下,而加载不同的脚本,或者相同的脚本而不同的版本,这就需要动态添加了
具体放置方法
可以动态的创建script元素,然后脚本链接赋值给src,但要注意一点,在加载完这个脚本之后才能进行下一步,否则放置的脚本可能没有生效或者是已经执行完而所依赖的脚本还在加载中。这是很重要的一点。
我所使用的框架是vit+react+ts进行开发的,因此我动态添加的script元素是放置在app.tsx中。具体代码如下:例 动态加载不同版本的微信sdk版本
import React from 'react';
import ReactDOM from 'react-dom';
import {
BrowserRouter } from 'react-router-dom';
import {
getEnv } from '@/utils';//区分微信环境和企业微信环境
import App from './app';
// 根据环境插入不同js-sdk,按目前文档企业微信插入1.2,微信插入1.6
const script = document.createElement('script');
// script.crossOrigin = 'anonymous';
if (getEnv() === 'qywx') {
script.src = 'https://res.wx.qq.com/open/js/jweixin-1.2.0.js';
script.onerror = () => {
window.$log('qy-wx-sdk:loadError');
};
} else {
script.src = 'https://res.wx.qq.com/open/js/jweixin-1.6.0.js';
script.onerror = () => {
window.$log('wx-sdk:loadError');
};
}
script.onload = rcInit;//加载完script后,渲染页面dom
document.head.appendChild(script);
function rcInit() {
ReactDOM.render(
<BrowserRouter basename="/admin-app">
<App />
</BrowserRouter>,
document.getElementById('root')
);
}
边栏推荐
- Y86. Chapter iv Prometheus giant monitoring system and the actual combat, Prometheus storage (17)
- Implementing a server-side message active push solution based on SSE
- Asynchronous programming solution Generator generator function, iterator iterator, async/await, Promise
- 什么是数字孪生智慧城市应用场景
- 张量篇-应用案例
- 【医保科普】维护医保基金安全,我们可以这样做
- Innovation and Integration | Huaqiu Empowerment Helps OpenHarmony Ecological Hardware Development and Landing
- XSS相关知识点
- 2022支付宝C2C现金红包PHP源码DEMO/兼容苹果/安卓浏览器和扫码形式
- 十一种概率分布
猜你喜欢

How to drop all tables under database in MySQL

Oracle与Postgresql在PLSQL内事务回滚的重大差异

6-port full Gigabit Layer 2 network managed industrial Ethernet switch Gigabit 2 optical 4 electrical fiber self-healing ERPS ring network switch

4路双向HDMI综合业务高清视频光端机8路HDMI高清视频光端机

机器学习之视频学习【更新】

【 observe 】 super fusion: the first mention of "calculate net nine order" evaluation model, build open prosperity of power network

【项目实现】Boost搜索引擎

Postgresql源码(66)insert on conflict语法介绍与内核执行流程解析

KingbaseES数据库启动失败,报“内存段超过可用内存”

千兆2光8电管理型工业以太网交换机WEB管理X-Ring一键环网交换机
随机推荐
MySQL 查询练习(1)
typescript type 和 interface 的区别
2022年软件测试——精选金融银行面试真题
MySQL查询优化与调优
ingress 待完善
学会iframe并用其解决跨域问题
三分建设,七分管理!产品、系统、组织三管齐下节能降耗
力扣(LeetCode)215. 数组中的第K个最大元素(2022.08.03)
How class only static allocation and dynamic allocation
base address: environment variable
sql语句查询String类型字段小于10的怎么查
解决问题遇到的问题
Basic form validation process
Take care of JVM performance optimization (own note version)
2022 Hangzhou Electric Power Multi-School League Game 5 Solution
目标检测-中篇
怎样提高网络数据安全性
Functions, recursion and simple dom operations
帮助企业实现数字化转型成功的八项指导原则
View mysql deadlock syntax