(这里有很多关于在PHP中逃避JS的问题,但我仍然无法确定在所有情况下作为规则使用的最佳方法。)
考虑页面上的脚本:
echo '<a class="x2delete" onclick="if ( confirm("Are you sure you want to delete " + ' . $img . ') ) { DeleteImage('."'".$img."'"." ,' ".$count."'".'); return false; }" href="javascript:;"></a>';
这当然没有用,所以我试图逃避它:
confirm(\"Are you sure you want to delete ?\")
我还尝试了'
/\
,\/
以及其他各种方法,但所有转义方法都失败了,直到我决定使用正确的XML实体表示形式"
< / p>
if ( confirm("Are you sure you want to delete ?" + ' . $img . ')
因此"
适用于此特定代码。 (它甚至可以被认为是逃避吗?)
我的问题是:
在"
期间,使用echoing js in php ?
进行转义将始终适用于我
我可以一直使用它而不是其他逃避方法(对我来说,只是试错了..)
它是否始终适用于所有浏览器?
(奖励非强制性/相关问题)。为什么我需要confirm()
周围的括号?只写
if confirm("Are you sure you want to delete ?")
给了我一个错误的括号错误。我确信它可以在一个条件/行中工作。
答案 0 :(得分:0)
您需要插入文字反斜杠,这意味着使用\\
:
echo '<a class="x2delete" onclick="if ( confirm(\\"Are you sure you want to delete...
答案 1 :(得分:0)
这是我们想要的最终结果,对吧?
单引号或双引号:
单曲:
confirm("are you sure you want to delete?");
双重说明:
confirm('are you sure you want to delete?');
所以现在的问题是,如何将其包装成php代码。嗯,没有最好的&#34;实践。唯一的好做法是以对您来说可读的方式,对同一团队工作的其他程序以及 joiner程序员< / strong>谁可能会加入团队。在这里,我将分享我在我工作的几个项目中看到的一些实践。
一旦项目中出现模式,建议遵循该模式。因此,如果您的项目遵循反斜杠转义,那么这样做会更好。
练习1:关闭php标签,编写html,再次打开php。打开内联变种的PHP。
?>
<a onclick="confirm('Do you like this patter?')" href="<?php echo $ref_link ?>">Click Me!</a>
<?
练习2:在内部使用双引号,在内部使用单引号,为内部字符串使用转义双引号:
echo "<a class='x2delete' onclick='if ( confirm(\"Are you sure you want to delete + " . $img . "\") ) { DeleteImage(\"".$img."\" ,\"".$count."\"); return false; }' href='javascript:;'>Click Me</a>";
请记住,即使您编写
,浏览器(本例中为Firefox)也会使用双引号onclick='confirm("Is this ok?")'
它将被解析为:
onclick="confirm("Is this ok?")"
关于你的问题1-3,即使每个人都告诉你“是”&#39;它会工作。直到你的尝试,你才能真正了解自己。浏览器更改,语言更改,编译器更改,因此最好的方法是亲自测试。
关于你的上一个问题:
if confirm('Are you sure you want to delete ?')
你不能这样做,if
是一种语言结构,条件必须括在一对括号()
中。你可以跳过的是条件体{}
有一个语句体。我相信这在编程语言中很常见,至少是我试过的。
if(true)alert("yes"); else alert("no");
它的语法有效。但它被认为是不好的风格。