逃避撇号

sea*_*van 2 html javascript

我有这个简单的脚本: onclick='sharemusic("Say It Ain't So", "Weezer");'

由于"不是"的撇号,它不能正常工作.如何在不影响代码功能的情况下逃避撇号?

谢谢你!

Pau*_* S. 5

如果你绝对必须为JavaScript而不是 HTML 实体转义它,你可以用它的 Unicode 表示形式编写它

"\u0027" // "'"
"Say It Ain\u0027t So" // "Say It Ain't So"
Run Code Online (Sandbox Code Playgroud)

您可以通过

"'".charCodeAt(0) // 39
   .toString(16)  // "27"
// So pad 27 to 4 digits, then prepend \u
Run Code Online (Sandbox Code Playgroud)

使用 HTML 时,最好按照MrJammin 的回答中的建议使用 HTML 实体,因为它在 HTML 中,或者将其完全移出 HTML。否则,您将需要避开可能导致问题的所有内容,例如&to 的所有实例\u0026,而不是简单地&对其他引用样式进行更易读和相同的操作。


Jim*_*iTh 5

我不愿意添加这个答案,因为所有其他人都很好,对大多数人来说会更有用 - 通过回答基本问题:"如何在HTML属性中的Javascript中逃避" - 这不会回答这个问题.

有些人会认为以下是一种解决方法,其他人会将其视为唯一合适的解决方案 ™.

摆脱打字机撇号 - 尽管打字机在所有的复古气质中都很酷而时尚,但我们可以做得更好,甚至更老:回到适当的,一刀切的印刷撇号(AKA"卷曲撇号").

作为副作用,这也将解决逃避问题:

onclick="sharemusic('Say It Ain’t So', 'Weezer');"
Run Code Online (Sandbox Code Playgroud)

排版员会很开心,浏览器会很开心.好吧,只要你像你应该使用UTF-8一样 - 或者包含印刷撇号的其他编码.Unicode:U + 2019,entity:’’(是的,它与正确的单引号共享其代码点 - 但它仍然是"正确的"撇号).

正如评论中所提到的,有各种库和CMS /博客插件可以帮助处理转换为正确的印刷符号(以及其他印刷细节).请参阅wp-Typography,smartypants(我认为,这是第一次实现类似的东西 - 由Markdown的原始作者John Gruber开发),typogrify等.

我不确定有什么,如果有的话,最近的替代品,因为我很久以前做了我自己的(非公开的,我必须承认)C#实现.