在doc上执行写入:除非已明确打开,否则无法从异步加载的外部脚本写入文档...

如何解决在doc上执行写入:除非已明确打开,否则无法从异步加载的外部脚本写入文档?
在文档完全解析并关闭后,异步加载的脚本可能会运行。因此,您不能document.write()在这样的脚本中使用(从技术上讲可以,但是它不会做您想要的事情)。

您将需要document.write()通过创建DOM元素,然后使用.appendChild()or.insertBefore()或设置.innerHTML或某种直接DOM操作的机制将它们插入到特定的父级中,从而用显式DOM操作替换该脚本中的任何语句。

例如,代替内联脚本中的此类代码:

您可以使用它来替换上面的内联脚本,以动态加载脚本:

var container = document.getElementById("container");
var content = document.createElement("span");
content.style.color = "red";
content.innerHTML = "Hello";
container.appendChild(content);
或者,如果容器中没有需要附加的其他内容,则可以简单地执行以下操作:

var container = document.getElementById("container");
container.innerHTML = 'Hello';
解决方法
我试图在页面加载执行后加载某个脚本,如下所示:

function downloadJSAtOnload(){
var element = document.createElement("script");
element.src = "scriptSrc";
document.body.appendChild(element);
}
if (window.addEventListener)
window.addEventListener("load",downloadJSAtOnload,false);
else if (window.attachEvent)
window.attachEvent("onload",downloadJSAtOnload);
else window.onload = downloadJSAtOnload;
尽管此脚本似乎执行并下载了“ scriptSrc”,并将其附加在body标签末尾之前,但它在控制台(chrome)中产生了以下消息(不是错误)

无法在“文档”上执行“写入”:无法通过异步加载的外部脚本写入文档,除非已明确打开该文档。

这到底是什么意思?我应该做些不同的事情吗?即使我得到了预期的行为?
声明:地推任务网所有作品(图片、文字)均由用户自行上传分享,仅供网友学习交流。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

dituirenwu

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

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

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

打赏作者

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

抵扣说明:

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

余额充值