从HTML字符串代码中获取dom而不执行它
get dom from html string code without executing it
我需要解析一个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中。那么我如何在不启动httprequest的情况下修改htmlCode呢?
我想到了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
相关文章:
- 如何让React JS点击处理程序在执行时更新DOM
- 如果DOM发生更改,您将如何执行操作
- 在执行JS脚本后监视对DOM的更改
- Dom 解析和 JavaScript 执行
- 始终是在DOM就绪后执行的文档底部编写的代码
- jQuery DOM就绪,JavaScript执行
- 当我们使用基于标记的DOM就绪执行时,如何处理js函数
- 修改时,哪些DOM元素属性会导致浏览器执行回流操作
- DOM渲染是否保证在单个(同步)函数期间阻止'执行
- dom就绪后执行javascript
- 如何执行简单的基于 DOM 的 XSS 攻击
- DOMNodeInserted在对主体执行DOM操作时表现得很奇怪
- 使用 CasperJS 时,是否可以在执行任何内联或外部 Javascript 之前与加载页面的 DOM 进行交互
- 递归单步执行 HTML DOM 并打印属性
- 如何防止执行脚本但在 DOM 中显示它
- DOM 执行顺序疑惑
- 继续执行dom命令
- 如何在执行DOM后更改标记
- 如何在javascript中优先执行dom
- 在 Sizzle 对象上执行 DOM 方法时出错