【问题标题】:Escaping double quotes in event handler that does an alert, using Grails使用 Grails 在发出警报的事件处理程序中转义双引号
【发布时间】:2011-10-23 00:14:40
【问题描述】:

根据这个similar post,我尝试了以下但没有成功,并指出错误:

onclick="alert('This is my  \"quoted text:\"');"   (no browser response)

onclick="alert('This is my  \\"quoted text:\\"');  (no browser response) 

onclick="alert('This is my  "quoted text:"');"  (comes out as: This is my  "quoted text:")

onclick="alert('This is my  \x22quoted text:\x22');"  (grails .gsp page preprocessor chokes on this)

除了将警报放入函数之外,还有什么想法吗?我想有办法在 html/javascript 中做到这一点?

注意:我更新了标题以限定使用 Grails 的问题。以下所有解决方案通常都可以正常工作,但不适用于 grails 1.3.7。根据 MaxArt 的指示,在上述版本 4 中,在每个反斜杠之前添加了一个额外的反斜杠。

【问题讨论】:

    标签: javascript html grails


    【解决方案1】:

    最后一种形式是正确的。我不知道 Grails 是如何处理这个问题的,但您可以尝试转义反斜杠。

    您始终可以解决(实际上这是一种更好的做法)将事件侦听器附加到元素,而不是使用传统的事件声明。这应该在主体加载后执行:

    document.getElementById("alerter").addEventListener("click", function() {alert('This is my "quoted text"');}, false);
    

    当然,对于 Internet Explorer attachEvent。

    这应该是你的元素:

    <span id="alerter">Quoted text</span>
    

    【讨论】:

    • 谢谢 MaxArt,我会考虑这个。我想它将所有代码组织在一个地方。感谢您也确认第一个有效。当我在那里添加另一个黑斜线时,它确实起作用了。
    【解决方案2】:

    你试过了吗

    &#8220; for a left
    &#8221; for a right
    

    只是另一种选择。

    【讨论】:

    • 谢谢奥斯汀。它没有用,可能与 Dennis 的帖子类似的原因,即 Grails 将页面翻译成: onclick="alert('This is my &#8220;quoted text:&#8221;');"由于某种原因,这在浏览器中不起作用,不知道为什么。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-05
    • 1970-01-01
    • 2020-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-20
    相关资源
    最近更新 更多