Javascript 正则表达式替换html脚本标记,但一种类型除外
我需要将所有脚本标记(Javascript 正则表达式替换html脚本标记,但一种类型除外,javascript,html,regex,replace,Javascript,Html,Regex,Replace,我需要将所有脚本标记()替换为空白,但特定类型除外 我已经有了所有脚本标记的工作 var x = /<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi; y.replace(x, ""); var x=/此代码将捕获所有标记,以便您可以对它们进行迭代(循环)。我将此配置为将它们全部删除,但您可以轻松地将其包装在if条件中 按照这个例子 var all = document.getElemen
)替换为空白,但特定类型除外
我已经有了所有脚本标记的工作
var x = /<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;
y.replace(x, "");
var x=/此代码将捕获所有
标记,以便您可以对它们进行迭代(循环)。我将此配置为将它们全部删除,但您可以轻松地将其包装在if条件中
按照这个例子
var all = document.getElementsByTagName("script");
for (var i=0; i < all.length; i++) {
var all_id = all[i].id;
if (all_id!=="xyz") {
all[i].parentNode.removeChild(all[i]);
}
}
var all=document.getElementsByTagName(“脚本”);
对于(变量i=0;i
。。。更具可读性
var all = document.getElementsByTagName("script");
for (var i=0; i < all.length; i++) {
var all_id = all[i].id;
if (all_id==="xyz") {
// DO NOTHING IF ID==="xyz"
} else {
all[i].parentNode.removeChild(all[i]);
}
}
var all=document.getElementsByTagName(“脚本”);
对于(变量i=0;i
请注意,一旦
进入了#文档,就会对其进行解释,因此即使您将其删除,代码仍然存在。在将其插入主文档之前,您可能需要创建一个#文档片段来解释HTML并在那里应用所需的转换
您可以使用document.querySelectorAll
和:not
查找异常节点,然后对它们执行一些操作
var elms = document.querySelectorAll('script:not(#xyz)'), i = elms.length;
while (i-->0) {
elms[i].parentNode.removeChild(elms[i]);
}
使用jQuery:
console.group('All with[id]attr');
$('script')。不是('[id]')。每个(函数(){
log('Removed:',this);
这个。删除();
});
$('script')。每个(函数(){
console.log('keeped:',this);
});
console.groupEnd();
console.group('Only[id=test]');
$('script')。不是('[id=test]')。每个(函数(){
log('Removed:',this);
这个。删除();
});
$('script')。每个(函数(){
console.log('keeped:',this);
});
console.groupEnd()代码>
这不是正则表达式的好用法。您可以遍历所有脚本标记并删除没有给定id的标记。遍历DOM,然后document.getElementsByTagName('script')[0]。id='xyz'代码>。请注意,每页只能有一个id。使用Element.className='xyz'代码>来分配HTML类属性。我如何使用ajax响应来完成这项工作?我认为,漫游DOM不是一个选项。1+但是挑剔,i-->0
似乎是一个无法抗拒的箭头操作符<代码>i-->0
,0
可能更清晰。