rya*_*nve 30 javascript quotes jquery html5 escaping
我正在使用jQuery .data()
来处理自定义HTML5数据属性,其中属性的值需要能够包含单引号和双引号:
<p class="example" data-example="She said "WTF" on last night's show.">
Run Code Online (Sandbox Code Playgroud)
我知道使用"
数据属性值中的字符代码可以使上述工作,但我不能总是控制值的输入方式.另外,我需要能够在标记中使用HTML标记,如下所示:
<p class="example" data-example="
She said "<abbr title="What The F***">WTF</abbr>" on last night's show.
">
Run Code Online (Sandbox Code Playgroud)
如果某种形式.replace()
是答案,那么它需要在读取值之前完成 - .data()
通过将它应用于整个<body>
?
正常的反斜杠逃逸<abbr title="te\'st">WTF</abbr>
也不起作用.
理想情况下,这将具有以下两种方式的灵活性:
data-example="..."
和
data-example='...'
但如果它只有一种可能,那么我至少可以用它.想法?
更新 - 更多上下文:
我正在为responsejs.com工作.实际的应用可能是只为某个宽度以上的浏览器加载侧边栏(并在浏览器而不是PHP中处理).例如,在WordPress的情况下,侧边栏可能包含小部件,图像等.PHP标签中的引号是非问题b/c它们在到达浏览器之前被解析为HTML.例:
<aside id="primary" class="sidebar"
data-oweb='
<?php dynamic_sidebar( 'primary' ); ?>
'
>
optional default markup for mobile and no-js browsers here
</aside>
Run Code Online (Sandbox Code Playgroud)
Guf*_*ffa 29
没有办法绕过它,你必须正确地转义值,否则无法正确解析HTML.在解析代码后,您无法使用Javascript来更正代码,因为它已经失败了.
使用正确HTML编码的示例如下:
<p class="example" data-example="She said "<abbr title="What The F***">WTF</abbr>" on last night's show.">
Run Code Online (Sandbox Code Playgroud)
你不能使用反斜杠来转义字符,因为它不是Javascript代码.您使用HTML实体来转义HTML代码中的字符.
如果你无法控制数据的输入方式,那么你就搞砸了.你只需找到一种方法来控制它.
小智 10
使用encodeURI 转义 JSON 对象中的引号。使用decodeURI 解析字符串。
var popup = document.getElementById('popup'),
msgObj = JSON.parse(decodeURI(popup.dataset.message));
console.log(msgObj);
Run Code Online (Sandbox Code Playgroud)
<a id="popup" href="#" data-message="%7B%22title%22:%22Print%22,%22message%22:%22Printing%20not%20yet%20implemented%22%7D" />
Run Code Online (Sandbox Code Playgroud)
小智 5
当我使用 data 属性将一些数据与 html 元素一起从 PHP 传输到 JavaScript 时,我只base64_encode
在后端使用,然后在客户端使用 base64Decode(input)
来获取数据。这样我就可以避免任何逃避狂欢的事情。我使用的 JavasScript 代码位于此处http://www.webtoolkit.info/
归档时间: |
|
查看次数: |
22623 次 |
最近记录: |