从html字符串代码中获取dom而不执行它

时间:2014-03-24 02:24:24

标签: javascript

我需要解析一个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?

1 个答案:

答案 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。

相关问题