- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个文本区域,我的网站用户可以在其中输入自己的内容(基于 markdown 标准),然后将其发布到我的网站中。
我使用的库(它根据keydown
将markdown转换为HTML)生成没有属性的标签。因此,为了确保用户输入的用户界面安全,我有以下代码:
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();
}
上面的代码删除了每个至少具有一个属性的标签。这工作得很好。
最近我发现 markdown-converter-library 还生成了一些具有 href 属性或同时具有 src
和 alt
属性的标签。像这样的东西:
<a href="../path">my link</a>
<img src="../path" alt="something" />
现在我需要编辑 cleanHtml()
函数来删除除上面两个示例之外的每个具有属性的标签。
我怎样才能做到这一点?
最佳答案
检查$(el).attr('src')
或$(el).attr('src')
是否返回未定义:
el.hasAttributes('attributes') && ( !$(el).attr('src') && !$(el).attr('href') )
$('*').each(function(i, el){
if(el.hasAttributes('attributes') && ( !$(el).attr('src') && !$(el).attr('href') ) ) {
$(el).remove();
}
});
p {
width:100px;
height:100px;
background:#ddd;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<a href="http://unsplash.it" style="color:#f44336">my link</a>
<a href="http://unsplash.it" style="color:#f44336;size:16px">Unsplash 2</a>
<img src="http://unsplash.it/100" alt="something" />
<p id="s" data-a="a"></p>
关于javascript - 如何删除除特定属性之外至少具有一个属性的标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41914194/
你能比较一下属性吗 我想禁用文本框“txtName”。有两种方式 使用javascript,txtName.disabled = true 使用 ASP.NET, 哪种方法更好,为什么? 最佳答案 我
Count 属性 返回一个集合或 Dictionary 对象包含的项目数。只读。 object.Count object 可以是“应用于”列表中列出的任何集合或对
CompareMode 属性 设置并返回在 Dictionary 对象中比较字符串关键字的比较模式。 object.CompareMode[ = compare] 参数
Column 属性 只读属性,返回 TextStream 文件中当前字符位置的列号。 object.Column object 通常是 TextStream 对象的名称。
AvailableSpace 属性 返回指定的驱动器或网络共享对于用户的可用空间大小。 object.AvailableSpace object 应为 Drive 
Attributes 属性 设置或返回文件或文件夹的属性。可读写或只读(与属性有关)。 object.Attributes [= newattributes] 参数 object
AtEndOfStream 属性 如果文件指针位于 TextStream 文件末,则返回 True;否则如果不为只读则返回 False。 object.A
AtEndOfLine 属性 TextStream 文件中,如果文件指针指向行末标记,就返回 True;否则如果不是只读则返回 False。 object.AtEn
RootFolder 属性 返回一个 Folder 对象,表示指定驱动器的根文件夹。只读。 object.RootFolder object 应为 Dr
Path 属性 返回指定文件、文件夹或驱动器的路径。 object.Path object 应为 File、Folder 或 Drive 对象的名称。 说明 对于驱动器,路径不包含根目录。
ParentFolder 属性 返回指定文件或文件夹的父文件夹。只读。 object.ParentFolder object 应为 File 或 Folder 对象的名称。 说明 以下代码
Name 属性 设置或返回指定的文件或文件夹的名称。可读写。 object.Name [= newname] 参数 object 必选项。应为 File 或&
Line 属性 只读属性,返回 TextStream 文件中的当前行号。 object.Line object 通常是 TextStream 对象的名称。 说明 文件刚
Key 属性 在 Dictionary 对象中设置 key。 object.Key(key) = newkey 参数 object 必选项。通常是 Dictionary 
Item 属性 设置或返回 Dictionary 对象中指定的 key 对应的 item,或返回集合中基于指定的 key 的&
IsRootFolder 属性 如果指定的文件夹是根文件夹,返回 True;否则返回 False。 object.IsRootFolder object 应为&n
IsReady 属性 如果指定的驱动器就绪,返回 True;否则返回 False。 object.IsReady object 应为 Drive&nbs
FreeSpace 属性 返回指定的驱动器或网络共享对于用户的可用空间大小。只读。 object.FreeSpace object 应为 Drive 对象的名称。
FileSystem 属性 返回指定的驱动器使用的文件系统的类型。 object.FileSystem object 应为 Drive 对象的名称。 说明 可
Files 属性 返回由指定文件夹中所有 File 对象(包括隐藏文件和系统文件)组成的 Files 集合。 object.Files object&n
我是一名优秀的程序员,十分优秀!