如何使用原生JS创建脚本的完整副本
How to create full copy of a script using native JS?
有以下任务-我需要创建脚本对象的副本(除了src之外的所有属性),即如果有这样的东西:
<script src="1" async data-x="bb">
我需要创建一些脚本标签,并插入具有相同属性的标签,即
<script src="new_src" async data-x="bb">
我试着做了以下一个:
var script = document.currentScript;
insert('new_src', script.attributes);
function insert(src, attributes) {
var script = document.createElement('script');
script.attributes = attributes;
script.src = src;
oldScript.parentNode.insertBefore(script, oldScript.nextSibling);
}
插入了新脚本,但除src外,其他属性为空。我该怎么做才对?提前感谢!仅使用本机JS
通过cloneNode
可以实现将attributes
从一个元素存储到另一个元素的方法
var newScript = document.currentScript.cloneNode();
// newScript has the same attributes as, document.currentScript
// now you can overwrite the src attribute,
newScript.src = "new_src";
这样,您的insert
函数可以重写为,
function insert(src, node) {
var script = node.cloneNode();
script.src = src;
node.parentNode.insertBefore(script, node.nextSibling);
}
我在下面的开发人员工具中测试过
# grabbed the first <script> tag on the page for brevity,
> insert("whatever",$$("script")[0])
# lets view the <script> tag we cloned from,
> $$("script")[0]
# returns, <script type="text/javascript" async src="http://engine.adzerk.net/ados?t=1459514526146&request=...,"IsAsync":true}"></script>
# check the attributes on the cloned element,
> $$("script")[0].nextSibling
# returns, <script type="text/javascript" async src="whatever"></script>
相关文章:
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- 借助asp.net验证或java脚本对多个文本进行验证
- chrome扩展:尽管运行了at:documentidle,js脚本还是过早启动
- Java脚本时间添加
- 不显示带有本地json文件数据的谷歌地图脚本
- JQuery添加元素需要在我的js之前再次添加JQuery脚本
- 从远程脚本获取用户IP
- 如何根据时间运行不同的脚本
- 如何将字符串值从php页面发送到java脚本页面
- 使用谷歌应用程序脚本将服务器端数据表返回到客户端
- 可以设置“;文件名"发生错误时显示的内联脚本标记的
- 当脚本由system.js加载时,如何要求('electron')
- HTML标记在脚本标记中工作
- 是否可以控制获取哪些Google地图脚本(JavaScript API)
- 如何测试Greasemonkey脚本,尤其是在本地网页副本上
- 从redis到elasticsearch的Node.js脚本副本内存不足
- 如何使用原生JS创建脚本的完整副本
- Adsense 脚本参考 - 每页单个或多个副本
- 为什么document.execCommand(“副本”)不能;我无法在chrome扩展的内容脚本中工作
- 谷歌表格,脚本在制作副本后停止工作