Rob*_*tan 5 javascript append appendchild createelement
如何删除附加的脚本,因为它会导致我的应用程序出现问题.
这是我获取脚本的代码
var nowDate = new Date().getTime();
var url = val.redirect_uri + "notify.js?nocache=" + nowDate + "&callback=dummy";
var script = document.createElement('script');
script.src = url;
document.body.appendChild(script);
Run Code Online (Sandbox Code Playgroud)
然后我有一个自动加载功能,导致创建另一个元素脚本.
我想摆脱添加另一个元素之前附加的前一个元素.
Pav*_*sky 11
基本上你可以使用类似于这个的函数删除脚本标记:
function removeJS(filename){
var tags = document.getElementsByTagName('script');
for (var i = tags.length; i >= 0; i--){ //search backwards within nodelist for matching elements to remove
if (tags[i] && tags[i].getAttribute('src') != null && tags[i].getAttribute('src').indexOf(filename) != -1)
tags[i].parentNode.removeChild(tags[i]); //remove element by calling parentNode.removeChild()
}
}
Run Code Online (Sandbox Code Playgroud)
注意,它使用filename参数来标识要删除的目标脚本.另请注意,目标脚本可能已在您尝试删除时执行.
我只是检查你是否已经添加了脚本.添加然后删除会增加不必要的复杂性.这样的事情应该有效:
var scriptAdded = false;
if(scriptAdded == false) {
document.body.appendChild(script);
scriptAdded = true;
}
Run Code Online (Sandbox Code Playgroud)
我做了更多测试,在您得到问题的正确答案(希望有一个)之前,您可以尝试以下操作:
<button onclick="foo()">ShowHTML</button>
<script>
(function foo(){
var b=function moo(){
var c=document.getElementsByTagName('script');
alert(document.body.innerHTML);
c[0].parentElement.removeChild(c[0]);
alert(document.body.innerHTML);
}
var a=setTimeout(b,1000);
b=null;
})();
foo=null;
</script>
Run Code Online (Sandbox Code Playgroud)
这只是一个测试代码,但它包含一个想法,即如何解决问题。它<sript>从 DOM 中删除,最后一行破坏了脚本的所有功能。
(代码还有一个小细节,它表明,无论如何论证,都可以......?setTimeout)eval()
| 归档时间: |
|
| 查看次数: |
31447 次 |
| 最近记录: |