満たそうとするビジネス要件: iframe 内に既存のページをロードし、iPhone ユーザー エージェントをエミュレートします。これがクライアント側で発生する必要がある理由は、ユーザー エージェントを検出し、いくつかのクラスを html 要素に追加するクライアント側スクリプトがあるためです。これに基づいて、CSS が html クラスに基づく要素を対象とするため、サイトのスタイルは根本的に変化します。
したがって、ここで解決しようとしている場合は、それをまたはに変えます。
window.open の使用は、(このコードで示されているように) クロム内で機能します。サイトは適切なモバイル スタイルで表示されます。
iframe の使用は機能しますが、FF でのみ機能します。
理想的には、iframe バージョンを Chrome と FF 内で動作させたいと考えています。
何かご意見は?
<script type="text/javascript">
navigator.__defineGetter__('userAgent', function () {
return 'Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_2 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8H7 Safari/6533.18.5';
});
var win = window.open('/home/get');
win.navigator.__defineGetter__('userAgent', function () {
return 'Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_2 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8H7 Safari/6533.18.5';
});
win.location.href = '/home/get'; //required
$(function () {
var frame = $('<iframe width="320" height="480"></iframe>');
frame.hide();
$('#container').append(frame);
(frame[0].contentWindow || frame[0].contentDocument).navigator.__defineGetter__('userAgent', function () {
return 'Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_2 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8H7 Safari/6533.18.5';
});
frame.attr('src', '/home/get');
});
frame.fadeIn();
});
</script>