我正在使用Magento尝试将错误消息样式设置为弹出窗口,而不是内联显示。
我找到了一篇解释如何做到这一点的文章,但是当我试图使用它时,代码显示一个错误。(http://azharkamar.com/5378/magento-modifying-default-message-alert-box-popup-dialog/)
这是我使用的代码:
$html .= '<a class="msgclose" href="#" onclick="document.getElementById("messages").style.visibility="hidden"">x</a>';
文章后面提到的一条评论说,他们"必须转义单引号才能使其工作。"
我尝试编辑代码,并使用了如下所示的代码。关闭按钮出现了,但它不会关闭该框。
$html .= '<a class="msgclose" href="#" onclick="document.getElementById("messages").style.visibility="hidden"">x</a>';
任何帮助都将非常感激,谢谢!
可以在单引号前加上反斜杠,或者对字符串使用双引号来转义:
$var = 'Escape '' like this';
$var = "Or embed ' like this";
如果您需要嵌入javascript,这可能有点困难,因为javascript字符串中的引号也需要转义。通常,您可以巧妙地将单引号和双引号组合起来:
$html .= '<a class="msgclose" href="#" onclick="document.getElementById(''messages'').style.visibility=''hidden''">x</a>';
或者你可以使用heredoc:
$html = <<<html
<a class="msgclose" href="#" onclick="document.getElementById('messages').style.visibility='hidden'">x</a>'
html;
顺便说一下,在HTML中转义引号是另一回事。您使用"
实体,因此,如果您想在Javascript中使用双引号,结果将是:
$html .= '<a class="msgclose" href="#" onclick="document.getElementById("messages").style.visibility="hidden"">x</a>';
可以用反斜杠转义代码中的单引号,如下所示:
$html .= '<a class="msgclose" href="#" onclick="document.getElementById(''messages'').style.visibility=''hidden''">x</a>';
或者你可以把javascript移出你的html:
$html .= '<a class="msgclose" href="#" onclick="hideMessage()">x</a>';
<script type="text/javascript">
function hideMessage() {
document.getElementById("messages").style.visibility = "hidden";
}
</script>
都可以转义'前面加反斜杠' (' -> '')
$html .= '<a class="msgclose" href="#" onclick="document.getElementById(''messages'').style.visibility="hidden">x</a>';
或者使用EOF函数来消除转义的需要。
$html .= <<<EOF
<a class="msgclose" href="#" onclick="document.getElementById('messages').style.visibility="hidden">x</a>
EOF;
在php中使用'
反斜杠转义字符。但是$html
转义后的值是不整齐的我是这样做的。
$html .= "<a class='msgclose' href='#' onclick='document.getElementById('messages').style.visibility='hidden''>x</a>";
我用了双引号,里面用了单引号