使用javascript转义字符

时间:2012-03-22 02:33:47

标签: javascript

我有一个打开浏览器窗口的功能:

function startmonitor(camerahash, cameraname, cameraflashquality, cameramotion)
{
    window.open("mydir/file.php?user="+'<?php echo $id_hash; ?>'+"&camera="+camerahash+"&name="+cameraname+"&quality="+cameraflashquality+"&motion="+cameramotion, "Webcam_monitor");
}

cameraname从html中的按钮传入:

<button id="monitor" onclick="startmonitor('<?php echo $result_cameras[$i]["camera_hash"]; ?>', '<?php echo $result_cameras[$i]["camera_name"]; ?>', '<?php echo $camera_quality_flash; ?>', '<?php echo $camera_motion; ?>');">Start Camera</button>

cameraname确实采用了特殊字符。例如Al's camera。由于它的特殊性,它会弄乱窗户。打开线。任何人都有想法如何重写window.open行以适应这个?

2 个答案:

答案 0 :(得分:2)

您可以尝试encodeUri

function startmonitor(camerahash, cameraname, cameraflashquality, cameramotion)
{
    window.open(encodeUri("file.php?user="+'<?php echo $id_hash; ?>'+"&camera="+camerahash+"&name="+cameraname+"&quality="+cameraflashquality+"&motion="+cameramotion), "Webcam_monitor");
}

编辑: 实际上,因为您想要对撇号进行编码,所以您需要在要转义的变量周围使用escape函数。在这种情况下,它将在cameraname变量周围使用。

function startmonitor(camerahash, cameraname, cameraflashquality, cameramotion)
{
    window.open("file.php?user="+'<?php echo $id_hash; ?>'+"&camera="+camerahash+"&name="+escape(cameraname)+"&quality="+cameraflashquality+"&motion="+cameramotion, "Webcam_monitor");
}

编辑2 好的,根据您的评论,您看起来需要在cameraname功能进入之前逃离startmonitor。所以你实际上会在你的按钮代码中逃避它,并且在你的功能代码中不是

<button id="monitor" onclick="startmonitor('<?php echo $result_cameras[$i]["camera_hash"]; ?>', escape('<?php echo $result_cameras[$i]["camera_name"]; ?>'), '<?php echo $camera_quality_flash; ?>', '<?php echo $camera_motion; ?>');">Start Camera</button>

编辑3 哇 - 我很迟钝。在输出到页面之前,只需使用php的urlencode函数进行编码。

<button id="monitor" onclick="startmonitor('<?php echo $result_cameras[$i]["camera_hash"]; ?>', <?php echo urlencode($result_cameras[$i]["camera_name"]); ?>, '<?php echo $camera_quality_flash; ?>', '<?php echo $camera_motion; ?>');">Start Camera</button>

答案 1 :(得分:2)

There are 3 ways to escape special characters:

  • escape()
  • encodeURI()
  • encodeURIComponent()