动态引入document.write的脚本

JS 中 document.write() 的用法和隐藏的坑 中的内容会将文档中的原本内容给覆盖掉,对于初学JS的朋友来说可能摸不着头脑,下面就针对这个问题,做下简单的探讨。中的内容写入到新的文档流中,这样新的文档流就会覆盖原本已加载的文档流,也就是情况二的由来。当我们点击button按钮时,执行对应的函数内容时,由于页面初始的文档流已经关闭,所以。首先,了解文档流的同学都知道,页面第一次打开时,浏览器会自上而下读取页面内容,1. 页面加载时,浏览器默认创建的文档流自上而下会读取整个页面内容,此时。创建一个新文档流,这个新文档流将会覆盖替换掉之前的文档流. 阅读详情

动态引入document.write的脚本

当网站需要动态引入脚本时,而引入的脚本逻辑又是通过document.write执行时,往往会出现问题。因为动态引入的脚本是会在页面DOMContentLoaded 事件完成后触发onload事件,此时页面dom结构渲染完成了,而此时document.write的渲染会把页面内容清空之后在写入。为了防止重复渲染,浏览器会禁止document.write执行。

Failed to execute ‘write’ on ‘Document’: It isn’t possible to write into a document from an asynchronously-loaded external script unless it is explicitly opened

方法一

改变页面加载的顺序
可以使用document.open打开页面渲染,改变页面的结构后调用document.close重新渲染

  <script>
      // 动态引入js文件
      document.open();
      document.write(`\<script src="https://srcfile/${num}/header.js"\>\<\/script\>`)
  </script>
  <!--header.js会动态插入这里-->
  <div id="app"></div>
  <script>
      document.write(`\<script src="https://srcfile/${num}/footer.js"\>\<\/script\>`)
      document.close();
  </script>
    <!--footer.js会动态插入这里-->

开启document.open之后,document.write的内容就会紧跟着写在document后面,而不会覆盖原始内容

方式二

将脚本作为接口地址请求,获取到内容,然后通过Dom.parser将内容转为html后解析里面的内容,插入网站中
需要处理文本内容

方式三

使用iframe存放脚本

const header_src = `https://srcfile/${num}/header.js`
      const iframe = document.querySelector('.heade-iframe');
      loadScriptViaIframe = () => {
        iframe.onload = () => {
          const iframeDoc = iframe.contentDocument || iframe.contentWindow.document;
        iframeDoc.open();
         iframeDoc.write(`\<script src="${header_src}"\>\<\/script\>`);
          iframeDoc.close();
        };
      }
        loadScriptViaIframe()
        document.body.insertBefore(iframe, document.body.firstChild);

适用性不强

方式四

如果脚本方能够提供可以动态引入的脚本文件最好

AutoCAD提示找不到acdb24.dll、AcGe24.dll、AcPal.dll、AcUt.dll怎么办? 在我们安装了AutoCAD 2023版本以后,打开CAD,可能会出现dll文件丢失的情况,如下所示:1、由于找不到acdb24.dll,无法继续执行代码。重新安装程序可能解决此问题。2、由于找不到AcGe24.dll,无法继续执行代码。重新安装程序可能解决此问题。3、由于找不到AcPal.dll,无法继续执行代码。重新安装程序可能解决此问题。4、由于找不到AcUt.dll,无法继续执行代码。重新安装程序可能解决此问题。遇到AutoCAD启动系统错误,由于找不到dll文件该怎么处理呢? 阅读详情

相关推荐

解密网页视频Blob链接:从防盗链到流媒体分片技术

本文深入解析了网页视频中Blob链接的工作原理,揭示了其作为现代视频防盗链与流媒体分片技术核心的本质。文章详细阐述了Blob对象与Media Source API如何协同工作,将视频数据分片传输,并结合HTML5的video元素实现安全、流畅的播放体验,有效提升了资源保护能力。

c7d8e的博客 317

去掉你代码里的 document.write("<script...

在传统的浏览器中,同步的 script 标签是会阻塞 HTML 解析器的,无论是内联的还是外链的,比如: &lt;script src="a.js"&gt;&lt;/script&gt; &lt;script src="b.js"&gt;&lt;/script&gt; &lt;script src="c.js"&gt;&lt;/script&g

weixin_34387468的博客 2102

保姆级教程:用ROS2 Humble和激光雷达,5分钟搞定机器人避障(附Python代码)

本文提供了一份详细的ROS2 Humble激光雷达避障实战指南,帮助开发者快速实现机器人避障功能。通过环境配置、硬件连接和Python代码实现,5分钟内即可让机器人自主避开障碍物。文章还涵盖了参数调优、常见问题排查及进阶优化技巧,适合机器人开发初学者和进阶用户。

weixin_42528902的博客 342

document.write script不生效用document.createElement替代

最近遇到一个document.write("<script type='text/javascript' src='test.js'></script>")在ie浏览器不生效的问题,可用document.createElement("script");解决 var s = document.createElement("script"); s.type = "text/javascript"; s.src = "test.js"; document.getElemen

Don't lost way 2674

2025虚幻游戏逆向工程解包尝试

2025虚幻游戏逆向工程解包指南 本文详细介绍了虚幻引擎5游戏逆向解包的完整流程,主要包括获取AES密钥、生成映射文件和导出资源三个关键步骤。作者在实际操作中遇到诸多难题:AES密钥获取工具存在加壳保护问题,映射文件生成器依赖复杂的VS编译环境,DLL注入工具的使用也存在技术门槛。通过多次尝试,作者发现部分游戏可直接搜索现成的AES密钥,而映射文件生成需要额外下载Memcury依赖库才能正常编译。文章提供了相关工具的下载链接和具体操作说明,但同时也指出每个环节都可能出现意外状况,逆向工程实际执行过程远比理论

wsdchong的博客 6150

保姆级教程:用PyTorch从零实现SDE扩散模型(附完整代码与MNIST实战)

本文提供了一份详细的PyTorch教程,指导读者从零开始实现SDE扩散模型,并附有完整的代码示例和MNIST数据集实战。通过解释随机微分方程(SDE)的核心概念、模型架构设计、训练流程实现以及采样生成过程,帮助开发者掌握扩散模型的构建与应用。

weixin_28677005的博客 265

document.write中写script语句不生效

document.write中写script语句不生效报错

qq_62810001的博客 1338

GOM引擎单机传奇架设全攻略——从DBC2000配置到登录器生成

本文详细解析了使用GOM引擎架设单机传奇的完整流程,从DBC2000的安装配置、服务端部署、引擎控制器设置,到登录器生成与客户端补丁放置。文章重点解决了单机架设中的常见问题,如数据库路径配置、IP地址设置及Key.lic文件处理,旨在帮助玩家快速搭建稳定的个人游戏环境,体验GM乐趣。

weixin_28318011的博客 629

document.write 方式引入外部 JS 文件导

标准参考 关于 document.write 方法请参考标准文档:DOM Level 2 HTML 规范 1.5. Objects related to HTML documents。 问题描述 当脚本中存在以 document.write 的方式向页面内写入内容时,各浏览器对于执行各个线程的顺序可能不一致。 造成的影响 此现象造成在各浏览器里,某些需要延后执行的

每天积累一点,一年后你会发现,自己变化很大 9659

Android 14.0 SystemUI下拉通知栏通知去掉长按事件

在14.0的系统rom产品定制化开发中,在systemui模块中关于下拉状态栏这块也是非常重要的部分,最近在关于systemui下拉通知栏的每条通知部分 要求去掉通知栏通知的长按事件,不需要长按功能,所以就需要分析下关于长按事件是在哪里注册的,然后去掉就可以了,接下来分析实现 相关功能

安卓兼职framework和app工程师的博客 276

携程机票数据爬取实战:使用 Python 获取携程网机票信息

通过本篇博客,我们详细介绍了如何使用 Python 爬取携程网的机票信息,涉及了静态网页爬取(使用 Requests 和 BeautifulSoup)和动态网页爬取(使用 Selenium)两种方法。通过获取的数据,我们不仅能够进行票价分析,还可以构建更为复杂的预测模型或趋势分析工具。爬虫技术不仅能够帮助我们收集有价值的数据,还能够为商业决策提供数据支持。在实际应用中,我们可以结合更多的分析方法,如自然语言处理、图像处理等,进一步提升数据的价值。

2201_76125261的博客 1657

探析浏览器执行JavaScript脚本加载与代码执行顺序

本文主要基于向HTML页面引入JavaScript的几种方式,分析HTML中JavaScript脚本的执行顺序问题 1. 关于JavaScript脚本执行的阻塞性 JavaScript在浏览器中被解析和执行时具有阻塞的特性,也就是说,当JavaScript代码执行时,页面的解析、渲染以及其他资源的下载都要停下来等待脚本执行完毕①。这一点是没有争议的,并且在所有浏览器中的行为都是一致的,原因也不...

lengye7的博客 855

车间数据孤岛终于破了!C#上位机+MQTT打通产线与MES,数据延迟从小时级降到秒级

本文针对工业上位机开发中常见的车间数据与企业管理系统(MES)割裂问题,提出基于C#和MQTT协议的完整解决方案。通过EMQX MQTT Broker实现数据实时双向传输,将质量追溯时间从2小时缩短至10秒,生产计划自动下发,实现秒级数据延迟。方案采用分层解耦架构,支持设备更换和系统升级,核心优势包括低延迟、高可靠性和易扩展性。文章详细介绍了MQTT协议选型理由、整体架构设计、技术选型(EMQX Broker和MqttNet客户端),并提供了C#实现代码和部署流程。该方案已在实际产线验证,可有效解决&quo

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 479

浏览器环境下JavaScript脚本加载与执行探析之代码执行顺序

本文主要基于向HTML页面引入JavaScript的几种方式,分析HTML中JavaScript脚本的执行顺序问题

每天进步一点点 1840

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

jQuery动态添加script标签

jQuery动态添加script标签 1、 $.getScript(url,success(response,status)); 2、 var script = document.createElement('script'); script.type = 'text/jacascript'; script.src = 'url'; //填自己的js路径 $('body').app...

weixin_43897661的博客 7985

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

spa中引入百度地图api出现警告

spa中引入百度地图api出现警告 引入百度地图之后,页面出现黄色警告: api?v=2.0&amp;ak=dm65KD93tW9zmcZys9YvKIUj:1 A parser-blocking, cross site (i.e. different eTLD+1) script, http://api.map.baidu.com/getscript?v=2.0&amp;ak=dm65KD93...

Amanda_wmy的博客 1971

动态插入js的加载过程是异步加载的

参考:动态创建&lt;script&gt;标签加载JS文件时是异步加载转载自:探析浏览器执行JavaScript脚本加载与代码执行顺序本文主要基于向HTML页面引入JavaScript的几种方式,分析HTML中JavaScript脚本的执行顺序问题1. 关于JavaScript脚本执行的阻塞性JavaScript在浏览器中被解析和执行时具有阻塞的特性,也就是说,当JavaScript代码执行时,页...

lzf的博客 2109

如何在一个js文件中引入另外的js文件

例如想要在a.js中引用b.js、c.js和d.js document.write("<script language='javascript' src='b.js'></script>"); document.write("<script language='javascript' src='c.js'></script>"); docu...

weixin_30484247的博客 768

js中导入引用外部js

js中导入引用外部js

芯蕊的阳光 8926

html动态加载js方法,动态引入js四种方法总结

这次给大家带来动态引入js四种方法总结,动态引入js四种方法的注意事项有哪些,下面就是实战案例,一起来看一下。index.html test.jsalert("hello! I am test.js");var str="1";dynamic.js//第一种方式:直接document.write 但这样会把当前的页面全覆写掉//document.write("");//第二种方式:动态改变已有sc...

weixin_39641697的博客 6132

21 Web基础 网页的关节JS

什么是JS HTML中的脚本编程语言:JavaScript,但和Java毛关系没有   这都不重要,重要的是: JS决定了如何动态改变HTML元素   使用JS 在html中使用js 引入外部.js文件   内容 document.write() 变量var:数值、字符、数组、字典/对象 document.getElementById() onclick="myFunct...

一夜飘零 7828

提高JS文件加载速度

开发过程中,经常发现JS加载文件出现过慢,导致页面文件很长时间打不开。 解决办法:换一个js包含的方式,让javascript加载速度倍增。 把通常加载方式: 改变成: document.write("") ...

wrong1111 533

Javaweb之javascript的详细解析

通过代码/js效果演示提供资料进行效果演示,通过浏览器打开,我们点击主题5按钮,页面的主题发生了变化,所以js可以让我们的页面更加的智能,让页面和用户进行交互。

qq_69748833的博客 1080

Hello_World

http://www.w3.org/TR/REC-html140/strict.dtd">     Hello World           document.write("Hello World!");    document.write("Hello World!");                      document.write("Hello World!");         

白云出岫本无心的专栏 429

4中js嵌入html的方式

4中js嵌入html的方式

m0_71153620的博客 4866

使用百度地图个性化地图加载会出现白块的解决方法

打印台报警告,在页面上使用document.write()来动态插入外部的脚本会阻塞页面的解析示 百度个性化地图出现白块

weixin_52921391的博客 4344
上一篇: 微信小程序BackgroundAudioManager使用中的问题
下一篇: Wxml2Canvas在组件中的渲染获取不到元素问题
晨灰ash2
博客等级 码龄7年 73粉丝 48原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晨灰ash2

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值