我如何编码html引导弹出窗口和工具提示内容
How do I encode html for Bootstrap popover and tooltip content
这可能是重复的;很难判断,因为关键词包含"html"answers"content",甚至必应和谷歌都返回了很多误报。
当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规范所不允许的。
虽然它似乎可以在ie浏览器上工作,但我真的不想在50个不同的浏览器和版本上进行测试。确实会混淆Visual Studio 2013 HTML编辑器中的解析器。那个编辑认为没有结束引号。
我可以通过在一个单独的文件中从JavaScript中分配属性来避免这种情况,但这很笨拙,并且会破坏关注点分离。那么,正确的标记方式是什么呢?
正如公认的答案所指出的那样,您不能在用"
引号括起来的字符串中使用引号"
。这个问题经常发生。如果您想要显示看起来像HTML的文本,那么浏览器如何知道它应该解析为HTML的内容以及它应该直接显示的内容呢?
例如,如何让浏览器显示文本<p></p>
答案是转义。您可以使用"
和<
"
和<
等字符。但是,转义引号的解决方案在这里不起作用。正是因为浏览器不会将其解析为HTML。如果你在html中加入转义引号,它们在浏览器看来就不像引号,而像文本。
然而,有一个不同的解决方案:用"
引号括起来的字符串可以毫无问题地包含'
。以下是有效的:
data-content="<div id='string_in_string' ></div>"
这可以应用到你的引导弹出窗口,我已经设置了一个小提琴,它显示了如何正确解析单引号字符串,而转义字符串混淆浏览器:https://jsfiddle.net/z4t2sud3/3/
这是fiddle内部的代码(fiddle环境会自动导入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()
})
你可以添加任何你想要的HTML属性,只要它是一个有效的HTML属性值。什么是有效的属性值?什么不包含标签,引号等。所以…和什么?解决方案是:在将字符串附加到html属性中之前,将其删除。
如果你正在使用PHP: http://fi2.php.net/htmlspecialchars或微博:http://twig.sensiolabs.org/doc/filters/escape.html
如果你正在使用jquery,当你做$el.data('my_scaped_json)将被转换为它原来是什么,这样的json对象或html-string: $($el.data('my_scaped_html));
- 如何防止高图工具提示弹出隐藏,在图形区域或浏览器窗口上调整大小
- 如何在工具提示窗口小部件中获取悬停元素的id
- 如何将文本框弹出窗口(Jquery 工具提示或类似工具)添加到画布中的 Fabric JS 图像
- 引导 3 弹出窗口与工具提示
- 使用 java 脚本在弹出窗口/工具提示上显示信息
- 为什么在工具提示窗口中的 HTML 按钮上单击不触发
- AngularJS工具提示/弹出窗口,内容重复
- 在Dojo中单击链接打开一个弹出窗口或工具提示
- 通过jQuery修复窗口定位工具提示
- 用于弹出窗口/工具提示的jQuery插件
- React和Bootstrap:工具提示在模态内(出现在模态窗口后面)
- 工具提示不能根据窗口大小进行调整
- 启动工具提示/弹出窗口上的按钮不工作
- 如何向多个标记添加信息窗口和工具提示?
- Mapbox搜索,打开弹出窗口/工具提示并更改自定义标记图像
- 我如何编码html引导弹出窗口和工具提示内容
- Imagemap:让点击区域的工具提示显示在鼠标窗口上
- 更改窗口大小的工具提示位置
- 工具提示窗口在添加更多文本时改变高度和宽度
- 使用AngularJS UI使工具提示位置相对于窗口大小