2012-06-03 45 views
2

我假设答案是:“这不可能,因为php是服务器语言而不是客户端语言”,但是我希望有人比我更专家来陈述这一点,并最终列出所有可能的解决方法...在不使用javascript的情况下在用户事件上执行php函数

问题:是否(完全)可以在用户在html中执行某些操作(例如鼠标悬停)时执行PHP函数(仅限于)页面没有使用任何JavaScript?

(PS作为一种解决方法,我考虑访问一个中间页面,其中包含将在客户端操作发生时执行的php代码,然后根据需要重定向,但这不是直截了当,只要传递php代码的结果就行。 )

回答

1

这是不可能的,如果没有提出新的请求。

您必须使用链接将用户发送到新页面(或者相同的页面 - 只要发出新请求即可),或者您必须使用类似AJAX的内容。


实际上我可以想到一种非常黑客的方式。这不完全漂亮,但它应该工作。

您可以使用iframe作为链接的目标。基本上,而不是在同一窗口或新窗口中打开链接,它会在隐藏的iframe中打开。

未经检验的,但在理论上:

<iframe name="testframe" id="testframe"></iframe> 
<a href="http://google.com" target="testframe">Test</a> 

编辑:一些粗糙的测试后,它看起来像Chrome浏览器不会服从这一点。看起来,IE9在某种程度上会有所改进。

3

一般没有。关于鼠标悬停的唯一解决方法我可能会想到的是由PHP脚本生成的小型1x1透明背景图像,仅当用户悬停在某个元素上时才会显示。

HTML:

<div id="mouseover_php">execute php</div> 

CSS:

#mouseover_php:hover { 
    background-image:url(/path/to/php-script) 
} 

PHP:

<?php 
    // your code 
    // set http headers to correct content type and to disable caching 
    // output 1x1 pixel transparent image 

但作为所有现代浏览器都使用预取和缓存(虽然这可以通过setting the Cache Control header影响)我当然不会依赖这个作为鼠标悬停的无可置疑的指标事件。所以,如果有的话,这是一个非常不洁的黑客。

关于点击:这里唯一可能的方法是加载一个中间页面,就像您提出的那样。就我而言,没有AJAX就无法实现这一点。

相关问题