Javascript窗口.提示包含反斜杠的变量

Javascript window.prompt with variable containing backslashes

本文关键字:变量 包含反 窗口 提示 Javascript      更新时间:2023-09-26

我有一个页面的超链接(自然)是由SQL表构建的,但一些超链接实际上是网络资源(即'server'path)。对于这些,我设置了一个jQuery语句来查找它们并将这些<a href>标记替换为<a onclick='window.prompt...>,以便网络位置将在提示的文本框中,然后用户可以将其复制并粘贴到Windows资源管理器中。问题是,所有的反斜杠都被删除了。我知道你通常必须用双反斜杠转义它们,我不是手动输入路径,它们来自SQL表,我使用变量将它们放入提示符中。有人知道有解决办法吗?

else if (($link.length > 0) && ($link.substring(0, 4) != "http")) {
  $('.linktext', $this.closest('tr')).after("<span><a href='#link' onclick='window.prompt('"This resource is located on a network drive and is not accessible via the web browser. Please copy the link and paste into Windows Explorer.'",'""+$link+"'");'>Text</a></span>");
}

提示符工作,但文本区域看起来就像这样'serverfolder1folder2file.ext

用两个反斜杠代替一个:''server''path

JavaScript字符串/正则表达式中的反斜杠具有转义字符的特殊含义:

var stringWithNewLine = "This
doesn't work"; //Error
var stringWithNewLine = "This'ndoes work"; //Escaped new-line feed.

mysql_real_escape_string()是您的解决方案。

echo mysql_real_escape_string("hello'world");

输出
hello''world

因此,在将服务器值传递回客户端之前,只需转义它们。

我只是想到了一个简单的解决方案,可以在从SQL加载URL值后"转义"URL值。这样我就可以有选择地锁定要转义的内容,并保留正常的http URL:

else if (($link.length > 0) && ($link.substring(0, 4) != "http")) {
            $linkescaped = $link.replace(/''/g, "''''");
            $('.filter', $this.closest('tr')).after("<span><a href='#link' onclick='window.prompt('"This resource is located on a network drive and is not accessible via the web browser. Please copy the link and paste into Windows Explorer.'",'""+$linkescaped+"'");'></a></span>");
        }