当前位置:网站首页>如何动态添加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')
);
}
边栏推荐
- sql注入一般流程(附例题)
- Asynchronous programming solution Generator generator function, iterator iterator, async/await, Promise
- SQL注入中 #、 --+、 --%20、 %23是什么意思?
- Gigabit 2 X light 8 electricity management industrial Ethernet switches WEB management - a key Ring Ring net switch
- 跨境电商看不到另一面:商家刷单、平台封号、黑灰产牟利
- docker+网桥+redis主从+哨兵模式
- Polygon zkEVM网络节点
- 缓存穿透、缓存击穿、缓存雪崩以及解决方案
- typescript type 和 interface 的区别
- 帮助企业实现数字化转型成功的八项指导原则
猜你喜欢
Why use Selenium for automated testing
帮助企业实现数字化转型成功的八项指导原则
Eight guiding principles to help businesses achieve digital transformation success
4-way two-way HDMI integrated business high-definition video optical transceiver 8-way HDMI high-definition video optical transceiver
全网没有之一的JMeter 接口测试流程详解
本周四晚19:00知识赋能第4期直播丨OpenHarmony智能家居项目之设备控制实现
劝退背后。
2022杭电多校联赛第五场 题解
The general SQL injection flow (sample attached)
怎样提高网络数据安全性
随机推荐
base address: environment variable
【机器学习】21天挑战赛学习笔记(一)
docker+网桥+redis主从+哨兵模式
Significant differences between Oracle and Postgresql in PLSQL transaction rollback
学会iframe并用其解决跨域问题
docker+bridge+redis master-slave+sentry mode
KingbaseES数据库启动失败,报“内存段超过可用内存”
Take care of JVM performance optimization (own note version)
Postgresql源码(66)insert on conflict语法介绍与内核执行流程解析
Basic form validation process
仿牛客论坛项目梳理
劝退背后。
How to automatically export or capture abnormal login ip and logs in elastic to the database?
十一种概率分布
基于Qt的目录统计QDirStat
说说数据治理中常见的20个问题
【MD5】采用MD5+盐的加密方式完成注册用户和登录账号
如果禁用了安全启动,GNOME 就会发出警告
《nlp入门+实战:第八章:使用Pytorch实现手写数字识别》
[Ryerson emotional speaking/singing audiovisual dataset (RAVDESS)]