2

答えは「phpはクライアント言語ではなくサーバー言語であるため不可能です」と思いますが、私よりも専門家にこれを述べて、最終的に考えられるすべての回避策をリストしてもらいたいと思います...

質問:ユーザーがJavaScriptを使用せずにhtmlページで「クリック」または他の種類のアクション(マウスオーバーなど)を実行したときに、php関数を(のみ)実行することは(まったく)可能ですか?

(PS回避策として、クライアントアクションが発生したときに実行されるphpコードを含む中間ページにアクセスし、必要に応じてリダイレクトすることを検討しましたが、phpコードの結果を渡す限り、これは簡単ではありません。)

4

2 に答える 2

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

しかし、最近のすべてのブラウザーはプリフェッチとキャッシュを使用しているため(ただし、これはCache Controlヘッダーを設定することで影響を受ける可能性があります)、マウスオーバーイベントの疑う余地のないインジケーターとしてこれに依存することはありません。したがって、これは、どちらかといえば、非常に不潔なハックになります。

クリックについて:ここで可能な唯一の方法は、提案したとおりに中間ページをロードすることです。私に関する限り、AJAXなしでこれを達成する方法はありません。

于 2012-06-03T10:16:54.410 に答える
1

これは、新しいリクエストを行わずに行うことはできません。

リンクを使用してユーザーを新しいページ(または同じページ-新しいリクエストが行われる限り何でも)に送信するか、AJAXなどを使用する必要があります。


実際、私が考えることができる非常にハックっぽい方法が1つあります。正確にはきれいではありませんが、機能するはずです。

リンクのターゲットとしてiframeを使用できます。基本的に、同じウィンドウまたは新しいウィンドウで開くリンクの代わりに、非表示のiframeで開きます。

テストされていませんが、理論的には:

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

編集:いくつかの大まかなテストの後、クロムはこれに従わないようです。IE9はある程度はそうなるでしょう。

于 2012-06-03T10:03:51.177 に答える