2009-07-18 11 views
1

PHPがブラウザのポートサイズを正しく検出できないことはほとんどありませんか?訪問者ブラウザのポートサイズをJavascriptで検出し、PHP変数に保存

しかし、それ以来、誰かが私にJavascriptでそれを行い、Javascript変数からそのサイズをPHPの変数に集める方法を教えてくれますか?

よろしくお願いします。同じ質問のある投稿がありましたら申し訳ありません。ありがとうございます。

+1

私はあなたの質問への答えを手助けすることはできませんが、私はPHPがポートの大きさを検出できないことを明確にすることができます。 –

+0

説明をありがとう。 –

答えて

2

ビューポートサイズを取得するには、Javascriptを使用する必要があります。 JS Frameworks/Librariesがそのサイズをどのように決定するかを見ることができます(例えば、prototype.jsでは、何かをするgetDimensions関数がありますあなたが欲しい)。グーグルはそれについて多くの結果を得るでしょう(this oneはその結果の例です)

次に、そのサイズをPHPに送信する必要があります。そのために、2つのソリューション:

  • 一つは、他のPHPスクリプトを指すURLで、動的に<img>タグを構築することです
  • (パラメータとして幅と高さを送る)Ajaxリクエストを使用することですlike 'http://.../size.php?w=WIDTH&h=HEIGHT'
    • 多くの統計ソフトウェア(xiti/google analyticsのようなもの - そのようなものは^^)はそのような方法を使用します。
    • 第2のケースで

、JSコードは次のようになります。

<script type="text/javascript"> 
    var width = 100; 
    var height = 80; 
    var tag = document.createElement('img'); // Create the tag 
    tag.src = 'http://tests/temp/viewport/size.php?'; 
    tag.src += 'w=' + width; // Pass the size 
    tag.src += '&h=' + height; 
    document.body.appendChild(tag); // Insert the tag into the page 
</script> 

そしてを、size.phpに、あなたは$ _GET [ 'W']と$ _GETを[使用'h']。 注:おそらくサイズからいくつかの有効な画像データを返す必要があります。PHP、「赤十字」画像を取得しないように(透過GIF、サイズは1×1を、例えば、トリックを行います)

+1

ちょっとしたことですが、サイトのすべてのページでsize.phpを何度も繰り返すことを避けるためには、ビューポートのサイズが既にユーザーに知られているという事実を(セッションなどで)次のページで再計算/再取得する必要はありません... –

+0

私はそれを試しました。 そして解決しました。しかし、ウィジェットと高さの値は、ナビゲーションバーにありません。 表示されない方法がありますか?ナビゲーションバーの –

+0

? imgタグを使用すると、呼び出されたURLは表示されません(firebugのようなものを見たり、ページからのリクエストを見る場合を除いて)。ユーザーがパラメータを見ても、それは本当に悪いですか? –

1

私は、これはあなたがjQueryを使ってそれを行うことができる方法だと思います:

VAR viewport_Width = $(ウィンドウ).width();
var viewport_Height = $(ウィンドウ).height();

しかし、この方法はOperaにバグがあります。ここを参照してください:オペラ

http://dev.jquery.com/ticket/3046

使用回避策を。

それから、それをPHPに保存するために(POSTまたはAJAX呼び出しによって)サーバーに送ることができます。

希望に役立ちます。

jQueryのようなライブラリを使用すると、多くの手間とブラウザのハッキングを避けることができます。 真剣に1つを使用することを検討し、最後に多くのサーバー側の問題を解決します。

+0

はい、私は確かにjQueryを使用します。 –

1

は、ここで私は(パスカルMARTINさんに基づく)であろうことだ:

<script type="text/javascript"> 
    var tag = document.createElement('img'); // Create the tag 
    tag.src = 'http://path/to/file.php?'; 
    tag.src += 'w=' + document.documentElement.clientWidth; 
    tag.src += '&h=' + document.documentElement.clientHeight; 
    document.body.appendChild(tag); // Insert the tag into the page 
</script> 

私はすべての主要なブラウザ(IE6、IE7、IE8、Firefox 2.x、Firefox 3.x、Opera 9.6x、Safari 3、およびChrome 2.x)でこれをテストしました。

+1

あなたはここでいくつかのJSライブラリを使用しています(jQueryのように見えます)。しかしKGTMのウェブサイトがそれを使用しない場合、私は彼がそのようなもののために追加するべきではないと思います。これは、完全なJSフレームワークなしで簡単に行うことができます。 (私はJS Frameworksが素晴らしくないとは言いません - 確かにそうですが、私は決してそれらの1つを使わずにwbesiteで作業することはありません - しかし、IMHOでは、事) –

+0

良い提案をありがとう。修正され、あなたのスクリプトに基づいています。 –

+0

ありがとうございました。 –

関連する問題