尝试满足的业务需求:在iframe中加载现有页面,模拟iphone用户代理。需要在客户端实现这一点的原因是,有些客户端脚本会检测用户代理并将一些类追加到html元素上。基于此,站点的样式将发生根本性变化,因为CSS会基于html类来定位元素。
因此,它会将<a>转换为<a class="iphone">,并在我要解决的情况下将其转换为<a class="android">等。
在Chrome中使用window.open可以正常工作(如此代码所示)。该站点以适当的移动样式呈现。
在FF中使用iframe可以正常工作,但只能在FF中使用。
理想情况下,我希望在Chrome和FF中都可以使用iframe版本。
有什么想法吗?
因此,它会将<a>转换为<a class="iphone">,并在我要解决的情况下将其转换为<a class="android">等。
在Chrome中使用window.open可以正常工作(如此代码所示)。该站点以适当的移动样式呈现。
在FF中使用iframe可以正常工作,但只能在FF中使用。
理想情况下,我希望在Chrome和FF中都可以使用iframe版本。
有什么想法吗?
<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>