这可能是重复的;很难区分,因为关键字包含"html“和"content”,甚至Bing和Google都返回了许多误报。
当data- html =true时,引导工具提示和弹出窗口支持data-content属性的html值。但是,这是无效的
<input id="email" class="form-control" type="email"
data-bind="value: Email, valueUpdate: 'afterkeydown'"
data-container="body" data-toggle="popover" data-placement="bottom"
data-title="Email" data-html="true"
data-content="<p>This is <i>your</i> email address.</p>" />
因为您不能仅仅将HTML放入本身就是html的属性的值中。它可能会混淆解析器,并且是HTML规范所不允许的。
虽然它似乎可以与Internet Explorer一起工作,但我真的不想用50种不同的浏览器和版本进行测试。它确实会混淆Visual Studio 2013 HTML编辑器中的解析器。那个编辑认为没有结尾的引号。
我可以通过在一个单独的文件中分配来自JavaScript的属性来避免这一点,但是这样做很笨拙,并且破坏了关注点的分离。
那么,正确的标记方式是什么呢?
发布于 2014-05-24 08:56:15
只要是有效的HTML属性值,您就可以向html属性添加任何您想要的东西。什么是有效属性值?不包含标签、引号等的内容。所以..。然后呢?解决方案是:在将字符串附加到html属性中之前对其进行处理。
如果您正在使用PHP:http://fi2.php.net/htmlspecialchars或Twig:http://twig.sensiolabs.org/doc/filters/escape.html
如果你使用jquery,当你使用jquery时,$el.data('my_scaped_json)会被转换成原来的样子,比如json对象或html-string:$( $el.data('my_scaped_html) );
发布于 2019-02-28 04:34:54
正如公认的答案所指出的,在用"
引用的字符串中不能有引用"
。这个问题经常发生。如果您想要显示类似于HTML的文本,那么浏览器应该如何知道它应该解析为HTML的内容以及应该简单地显示的内容。
例如,如何让浏览器显示文本<p></p>
答案是逃避。您可以使用"
和<
等占位符,而不是"
和<
等字符
然而,转义引号的解决方案在这里不起作用。这正是因为浏览器不会将其解析为HTML。如果你在html中添加转义引号,它们在浏览器中看起来不像引号,它们看起来像文本。
然而,还有一种不同的解决方案:用"
引用的字符串可以包含'
,而不会出现问题。以下内容是有效的:
data-content="<div id='string_in_string' ></div>"
这可以应用于您的引导弹出程序,我已经设置了一个小提琴,它显示了如何正确解析单引号字符串,而转义的字符串会使浏览器感到困惑:https://jsfiddle.net/z4t2sud3/3/
这是小提琴内部的代码(小提琴环境自动导入bootstrap、jquery等)
<mark data-content="
<button class="btnr" type="button">
Doesn't work
</button>
<button class='btn btn-info' type='button'>
Works
</button>
" data-html="true" data-toggle="popover">
Popovered
</mark>
并确保通过Javascript激活弹出窗口:
$(function () {
$('[data-toggle="popover"]').popover()
})
https://stackoverflow.com/questions/23840188
复制相似问题