我需要解析一个html字符串以获取特殊节点,并丢弃其他类似脚本标记
例如我使用此代码;
//I get the htmlCode from a textArea
htmlCode = '<video>'+
'<source src="/media/video.oga">'+
'<source src="/media/video.m4v">'+
'<script src="evilscript.js"></script>'+
'</video>';
var div = document.createElement('div');
div.innerHTML = htmlCode;
从那里我可以访问div的节点并丢弃不必要的节点;但我在网络选项卡中意识到,分配会启动视频源的请求。而且我不想提出任何请求,因为任何恶意脚本都可以在htmlCode中。那么如何在不启动httprequests的情况下修改htmlCode? p>
答案 0 :(得分:1)
我想到了documentFragment但它不能使用innerHTML,它使用了appendChild。
所以我想到了document.implementation.createHTMLDocument()
。
所以我测试了它,它的工作原理。它不会从源发出任何http请求。
这是我现在的代码:
var dom = document.implementation.createHTMLDocument();
dom.body.innerHTML = '<video>'+
'<source src="/media/video.oga">'+
'<source src="/media/video.m4v">'+
'<script src="evilscript.js"></script>'+
'</video>';
从这里我可以访问dom。