javascript - PHP 与 onclick 函数

标签 javascript php syntax onclick

我想从 php 文件执行 JavaScript 函数

喜欢:

<?php

$type=0;
echo('<img onclick="alert('.$type.')" src="picture.jpg"/>');

?>

结果:一切正常。现在我想用字符串来做到这一点:

<?php

$type='e';
echo('<img onclick="alert('.$type.')" src="picture.jpg"/>');

?>

结果:未捕获引用错误:e未定义onclick @ loadPlayer2.php:2

<?php

$type='e';
echo('<img onclick="alert("'.$type.'")" src="picture.jpg"/>');

?>

结果:未捕获语法错误:意外的标记}

    <?php

$type='e';
echo('<img onclick="alert(\"'.$type.'\")" src="picture.jpg"/>');

    ?>

结果:未捕获语法错误:意外的标记非法

<?php

$type='\e';

echo('<img onclick="alert("$type")" src="picture.jpg"/>');



?>

结果:未捕获语法错误:意外的标记}

最佳答案

不同的上下文需要不同的转义。您正在将 PHP 字符串与 HTML 属性和 JavaScript 字符串混合在一起。

  1. String interpolation仅适用于双引号:

              alternate single+dbl quotes
                         ↓
      echo "<img onclick='alert(\"$type\")' src='picture.jpg'>"
                                ↑
                         escaped quote
    
  2. $type 变量可以根据 json_encode 从 PHP 字符串转换为 JS 字符串。 :

      $type = json_encode($type);
      echo "<img onclick='alert($type)' src='picture.jpg'>"
                                  ↑
                adds "double" quotes automatically
    
  3. 最好申请htmlspecialchars对于整个属性:

      $type = json_encode($type);
      $onclick = htmlspecialchars("alert($type)");
      echo "<img onclick='$onclick' src='picture.jpg'>"
                             ↑
                escapes `"` into `&quot;` 
    
  4. 因此结果输出应如下所示:

       <img onclick='alert(&quot;\\e&quot;)' src='picture.jpg'>
                                                              ↑
                                                      pseudo-XHTML begone
    

    此时,甚至可以再次使用 " 作为属性值。

关于javascript - PHP 与 onclick 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32419186/

相关文章:

javascript - Google Analytics 自定义链接归因

javascript - 从根本上说,对全局范围本身的本地引用是一个坏主意吗?

php - 无法使用 MailChimp API 3.0 将用户添加到组

php - 从 00 :00 - 23:55 for every 5 minutes 创建数组时间列表

php - html与php的编码

php - 如何正确保护表单 - 平面文件数据库

javascript - 我有一个具有悬停效果的图像,但上面有一个文本,它避免了它

javascript - JavaScript 中数字方法的奇怪语法

java - Java "new Type[]{...}"数组文字初始化是什么类型的语法?

generics - 均值函数的 Rust 泛型语法