如何使用JavaScript从字符串中删除完整的标签?
问题的原因是:使用正则表达式来删除字符串中的完整标签不可靠,特别是对于不受信任的HTML内容来说。解决方法是使用DOMParser创建一个新的文档,然后使用DOM API查找并删除所有的script标签,最后返回剩余的内容。
代码如下:
function sanitise(input) { const parser = new DOMParser(); const doc = parser.parseFromString(input, "text/html"); //find all script tags const scripts = doc.getElementsByTagName('script'); for (const script of scripts) script.remove(); //remove from the DOM return doc.body.textContent.trim(); } console.log(sanitise("hello <script>alert('I am stealing your data');</scr"+"ipt>"));
问题的原因是,作者想要从一个字符串中完全删除一个标签,作者提到不应该使用正则表达式来完成这个任务,而是应该使用DOM解析器的功能。作者给出了一个使用JavaScript的解决方法,首先创建一个元素作为容器,将字符串赋值给这个元素的innerHTML属性,这样可以避免执行其中的脚本。然后使用querySelectorAll方法找到所有的”放入javascript字符串中?">如何将“”放入javascript字符串中?