1

iFrameのユーザーエージェントをiPhoneに設定したいのですが。私はこのコードを見つけました:

navigator.__defineGetter__('userAgent', function(){
return 'foo' // customized user agent
});

navigator.userAgent; // 'foo'

ここから

私のコードでこれを挿入する方法を知りたいです:PHP / HTML:

<div class="holder">
<form action="page.php" method="post">
<label>
http://
</label>
<input type="text" name="url" value="<? echo $_POST['url']; ?>" />
<input type="submit" value="Anschauen" />
</form>
</div>
<div class="iphone">  
<iframe src="<? echo 'http://'. $_POST['url']; ?>"></iframe>
</div>

上記のスクリプトが機能しない場合は、AJAXまたはcURLを使用する可能性があります。はいの場合、AJAXまたはcURLのコーディング方法がわからないため、誰かが私のコードの例を示すことができます。

4

1 に答える 1

3

PHP側からユーザーエージェント文字列を設定してiframeに影響を与えることはできません。ユーザーエージェントヘッダーは、リクエストごとにブラウザから送信されるクライアント識別子です。一部のブラウザでは手動で変更できますが、個々のフレームでは変更できません。

あなたが見つけた解決策は、JavaScriptを使用してユーザーエージェント文字列を変更するため、役に立たない可能性があります。この変更の結果は、iframeのコンテンツを返すサーバーには送信されません。


編集

OPはコメントで、「iPhoneモード」でWebサイトをプレビューするためのiframeを構築したいと述べました。

あなたが見ているものはあなたにとって非常に問題になるでしょう。いくつかの理由:

  1. iOSブラウザの動作を完全に再現できるデスクトップブラウザはありません。iOSバージョンのSafariはAppleのカスタムWebKitビルドであり、(理論的には)他のブラウザーはWebKitのものでさえ同じように動作しません。タッチイベント、Apple独自の調整、向きの変更などを考慮に入れる必要があります。

  2. 解決策を探しiframeている場合、iframe内でiPhoneを使用していることを示すヘッダーを送信することはできません。(回避策があります。以下のポイント2をお読みください。)

何ができるか

  1. 最新のWebサイトは、ユーザーエージェントヘッダー(ブラウザー識別子)をスニッフィングする代わりに、単に応答性が高く、画面の幅に適応します。これらのウェブサイトはブラウザを識別するためにユーザーエージェントヘッダーに依存しておらず、そのようなウェブサイトはiframeの寸法に合わせてデザインを調整するだけなので、これは役に立ちます。この単純なアプローチを選択すると、このiPhone4ブラウザシミュレータのようなものになります。

  2. xHRを使用してAJAXリクエストを作成できます。xHRを使用すると、リクエストとともに送信されるヘッダーを変更でき、User-Agentヘッダーを変更できるようになります。私はそれをテストしていないので、xHRでUser Agnetを変更できるかどうかはわかりませんが、試してみる価値があるかもしれません。 その後、応答が返され、その出力をiframeに配置できます。残念ながら、返されたコンテンツ内のリンクはURLに添付されなくなるため、壊れてしまう可能性が非常に高くなります。独自のスクリプトで応答の内容を確認し、リンクを修正する必要があります。理想的には、iPhoneのユーザーエージェントヘッダーを使用して別のxHRリクエストを行うために、すべてのクリックもスクリプトによってインターセプトされる必要があります。

ご覧のとおり、(シミュレーションではなく)ある種のエミュレーションを行う方法がありますが、Webサイトの応答性に依存するか、カスタムユーザーエージェントヘッダーを使用してページを要求するスクリプトを作成する必要があります(許可されている場合)。 )。

于 2013-02-09T13:50:22.523 に答える