2010-12-27 12 views
0

ユーザー設定の設定によっては、JavaScriptを使用して「メタビューポート」タグを動的に作成するiPhone Webアプリケーションがあります。noscriptブロック内のメタビューポートタグ

Javascriptが無効になっているが、適切な方法を見つけることができない場合に備えて、デフォルトのメタビューポートタグを提供したいと思います。

私はこの試みた:

<noscript> 
<meta name="viewport" content="initial-scale=1.0"> 
</noscript> 

をそして、それは仕事をして、しかしnoscriptは明らかに、HTML文書のHEADセクションでは許可されていないとして、有効ではないようです(私もthis questionを見て)

代替手段はありますか?

編集:私はすでに、その後、デフォルトのメタビューポートタグを持つJavaScriptでそれをを取り除く(または交換)しようとした

。これは「ほぼ」機能します:JavaScriptを使って既存のビューポートメタタグを実際に変更することができます(この手法はよくhereと記載されています)。ただし、いくつかの制限があります。特定のプロパティの値を変更することはできますが、すでに定義されているプロパティをデバイスが「忘れる」(デフォルト値にリセットする)ことはできません。また、単にJavascriptでメタタグを削除しても機能しません。

答えて

3

トリッキー。

あなたは

<meta name="viewport" content="initial-scale=1.0"> 

<script> 
document.write('<meta name="viewport" content="initial-scale=2.0">'); 
</script> 

を試してみましたか? (2.0は、スクリプトが有効な場合に設定したいスケールよりも大きい)

これは合法であるかどうかはわかりませんが、HTMLのようです。問題は、正しく解析されるかどうかです。常に

  • は、サーバー側でJavaScriptのサポートを検出し、2つの異なるページ、との1を提供し、metaタグのない1

  • それ以外

    、私は2つだけの選択肢を考えることができますビューポートタグを埋め込みました。をJavascriptで削除しています - これはうまくいくかどうかはわかりません。

+0

@Pekka:私は実際にも、noscript要素のことを考えて前に2番目のアプローチを試してみました。しかし、デフォルトのメタビューポートタグが含まれていて、Javascriptで削除/変更/置き換えられた場合、iPhoneは元のメタビューポート定義をそのまま使用します:-( – Grodriguez

+0

@Pekka:Javascriptがサーバー側で有効になっているかどうかを検出するにはどうすればよいですか? – Grodriguez

+0

@Grodriguezどのサーバー側の言語を使用できますか? –

2

HTML5を使用できます。 HTML5の場合、<noscript>は頭部の子として許可され、<meta>はnoscriptの子として許可されます。

こちらをご覧ください:http://dev.w3.org/html5/spec/scripting-1.html#the-noscript-element

+0

提案していただきありがとうございます。私はHTML5の頭の部分でnoscriptが許されているのを知らなかった。残念ながら、このアプリケーションではHTML5に切り替えることはできません。 – Grodriguez

関連する問題