2012-06-03 89 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就無法實現這一點。

相關問題