在页面加载/刷新时激活点击


OnClick activating on page load/refresh

我有一个链接,当页面被调用或刷新时,它会运行。

由于这设置为在单击时执行,因此不应发生这种情况。

我偷偷地怀疑,因为我href将路径留空,所以可能会导致问题,但添加文件位置不会改变结果。

<a href="" onClick="<?php exec('sudo python /var/www/html/lightson.py'); ?>"><img src="lightm.png" width="128" height="128"></a>

您在这里混合了客户端和服务器端代码。每当呈现您的页面时,都会对 PHP 进行评估(除非有一个像 if 语句这样的控制结构来阻止它的存在)。

您只能将 JavaScript 放在 onclick 事件中。如果要在单击元素时触发服务器端代码,则需要使用 AJAX。

编辑:我想给@Chris一些功劳,因为他在他的回答中很好地指出了一个关键点:你在这里混合了客户端和服务器端代码。他还证实了PHP代码将如何执行的事实,无论我在下面所说的假设和猜测是什么

,当然,事实证明这是正确的。

以下是我最初的回答:


我没有exec功能的经验,但不知何故,我的直觉告诉我,无论它在 HTML 文档中的哪个位置,它都会执行。实际上,它就像任何带有 PHP 的函数一样,您实际上并不需要它在 HTML 文件中正确格式化,它无论如何都会运行(好吧,除非它被注释掉),所以这就是它每次调用的原因,我想......

最好使用 AJAX 或其他方式加载外部文件,而不是 PHP 调用(服务器),考虑到您使用的是返回 click 事件处理程序代码(客户端)的onclick

例:

<a href="" onClick="myFunc()"><img src="lightm.png" width="128" height="128"></a>

AJAX 调用:

function myFunc() {
  $.ajax({
    url: "/var/www/html/lightson.py",
    // rest of the AJAX magic
  });
}