Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何删除除特定属性外至少具有一个属性的标记?_Javascript_Jquery_Html - Fatal编程技术网

Javascript 如何删除除特定属性外至少具有一个属性的标记?

Javascript 如何删除除特定属性外至少具有一个属性的标记?,javascript,jquery,html,Javascript,Jquery,Html,我有一个文本区,我的网站的用户在其中输入他们自己的内容(基于降价标准),然后在我的网站上发布 我使用的库(根据keydown将标记转换为HTML)生成没有属性的标记。因此,为了保护UI不受用户输入内容的影响,我有以下代码: function cleanHtml(html) { var $doc = $('<span>' + html + '</span>'); $('*', $doc).each(function (index, el) {

我有一个文本区,我的网站的用户在其中输入他们自己的内容(基于降价标准),然后在我的网站上发布

我使用的库(根据
keydown
将标记转换为HTML)生成没有属性的标记。因此,为了保护UI不受用户输入内容的影响,我有以下代码:

function cleanHtml(html) {
    var $doc = $('<span>' + html + '</span>');
    $('*', $doc).each(function (index, el) {
        if (el.hasAttributes('attributes')) {
            while ($(el).contents().length) {
                $(el).contents().last().insertAfter(el);
            }
            $(el).remove();
        }
    });
    return $doc.html();
}
现在我需要编辑
cleanHtml()
函数来删除除上述两个示例之外的所有具有属性的标记

如何执行此操作?

检查
$(el).attr('src')
$(el).attr('src')
是否返回未定义的:

el.hasAttributes('attributes') && ( !$(el).attr('src') && !$(el).attr('href') )
$('*')。每个(函数(i,el){
if(el.hasAttributes('attributes')&(!$(el.attr('src')&&!$(el.attr('href')){
$(el).remove();
} 
});
p{
宽度:100px;
高度:100px;
背景:ddd;
}


什么是hasAttributes()
定义?好了,jQuery有
hasAttr()
@AdamAzad在你的情况下,这不会被删除(应该是):
mylink
@stack,你是对的,我附加了一段代码。请记住,用户输入可以修改为向img tag.upvote注入带有XSS代码的
onload
,我明白了,谢谢你的提示。如何使我的UI安全地抵御XSS攻击?从循环中的节点中删除这些属性应该很简单。我建议在服务器端检查这些属性,因为用户总是可以篡改HTTP请求的数据。如果服务器端是Node.js,则可以加载cheerio(类似于jQuery的库,用于修改DOM字符串)。:)祝你好运,快乐
el.hasAttributes('attributes') && ( !$(el).attr('src') && !$(el).attr('href') )