在处理之前从json/js提要中删除所有javascript标记

removing all javascript tags from a json/js feed before processing

本文关键字:删除 标记 javascript js 处理 json      更新时间:2023-09-26

在处理之前,我正试图从js提要中删除一些不需要的注释

如果我试试这个

data = data.replace(/<script'b[^<]*(?:(?!<'/script>)<[^<]*)*<'/script>/gi, ' ');
  console.log(data);

我得到了错误数据。位置不是函数。。这是因为它仍然是对象格式吗?

我这样做的原因是有在饲料

test test <script>console.log("some script")</script> more text

我需要在处理之前把它去掉,因为在淘汰赛中不能加载这个数据

data是json格式的一组数据。

var data = [
{
	'id': '1',
	'firstName': 'fname1',
	'lastName': 'lname2'
	'text': 'Text'
},
{
	'id': '2',
	'firstName': 'fnam2',
	'lastName': 'lname2'
	'text': 'text text <script>console.log("some script")</script> text'
}]

没错,不能将replace应用于对象。它需要是一个字符串,因此您应该遍历所有元素,并将replace应用于相关字段

data.map(function (element) {
    element.text = element.text
        .replace(/<script'b[^<]*(?:(?!<'/script>)<[^<]*)*<'/script>/gi, ' ');
})

要简单地删除所有标签,您可以使用JavaScript提供的DOM方法:

var data = [
{
	'id': '1',
	'firstName': 'fname1',
	'lastName': 'lname2',
	'text': 'Text'
},
{
	'id': '2',
	'firstName': 'fnam2',
	'lastName': 'lname2',
	'text': 'text text <script>console.log("some script")</'+'script> text'
}];
var cleaned = data.map(function(item) {
  var d = document.createElement('div');
  d.innerHTML = item.text;
  // find all tags and strip them
  var tags = d.getElementsByTagName('*');
  [].forEach.call(tags, function(tag) {
    tag.parentNode.removeChild(tag);
  });
  // save cleaned text
  item.text = d.innerHTML;
  return item;
});
console.log(cleaned);

相关文章: