javascript – jQuery:在不执行脚本的情况下解析/操作HTML
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – jQuery:在不执行脚本的情况下解析/操作HTML,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1794字,纯文字阅读大概需要3分钟。
内容图文
![javascript – jQuery:在不执行脚本的情况下解析/操作HTML](/upload/InfoBanner/zyjiaocheng/782/22b1164bf9134706998a35baf555de59.jpg)
我正在使用以下格式通过Ajax加载一些HTML:
<div id="div1">
... some content ...
</div>
<div id="div2">
...some content...
</div>
... etc.
我需要迭代响应中的每个div并单独处理它.具有映射到id的每个div的HTML内容的单独字符串将满足我的要求.但是,div可能包含脚本标记,我需要保留但不执行(当我将HTML粘贴到文档中时它们会稍后执行,因此在解析期间执行会很糟糕).我的第一个想法是做这样的事情:
// data being the result from $.get
var clean = data.replace(/<script.*?</script>/,function() {
// insert some unique token, save the tag, put it back while I'm processing
});
$('<div/>').html(clean).children().each( /* ... process here ... */);
但是我担心一些愚蠢的开发者会出现并在其中一个div中添加这样的东西:
<script> var foo = '</script>'; // ... </script>
哪个会搞砸了.更不用说,整个事情感觉就像一个黑客入手.有谁知道更好的方法?
编辑:这是我提出的解决方案:
var divSplitRegex = /(?:^|<\/div>)\s*<div\s+id="prefix-(.+?)">/g,
idReplacement = preDelimeter+'$1'+postDelimeter;
var r = data.replace(<\/div>\s*$/,'').
replace(divSplitRegex,idReplacement).split(preDelimeter);
$.each(r,function() {
var content;
if(this) {
callback.apply(null,this.split(postDelimeter));
}
});
preDelimiter和postDelimeter只是像“###这样的独特字符串,我必须是一个白痴才能将这个字符串嵌入到我的内容中,因为它会破坏所有内容###”,而回调是一个期望div id和div内容.这只能起作用,因为我知道div只有一个id属性,id会有一个特殊的前缀.我想有人可以在他们的内容中加上一个带有相同前缀的id的div,它会搞乱也是.
所以,我仍然不喜欢这个解决方案.谁有更好的?
解决方法:
仅供参考,在任何JavaScript脚本中使用未转义都会在浏览器中导致此问题.开发人员无论如何都要逃避它,所以没有任何借口.所以你可以“信任”在任何情况下都会破裂.
<body>
<div>
<script>
alert('<script> tags </script> are not '+
'valid in regular old HTML without being escaped.');
</script>
</body>
看到
看到它破裂.
内容总结
以上是互联网集市为您收集整理的javascript – jQuery:在不执行脚本的情况下解析/操作HTML全部内容,希望文章能够帮你解决javascript – jQuery:在不执行脚本的情况下解析/操作HTML所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。