Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于检测ipad和方向的Javascript解决方案_Javascript_Ipad - Fatal编程技术网

用于检测ipad和方向的Javascript解决方案

用于检测ipad和方向的Javascript解决方案,javascript,ipad,Javascript,Ipad,是否有可靠的方法来检测从iPad上查看的网页(没有误报)以及通过JavaScript的方向是什么 我认为这有利于第一部分: var isiPad = navigator.userAgent.match(/iPad/i) != null; 我想我找到了第二部分: <button onclick="detectIPadOrientation();">What's my Orientation?</button> <script type="text/javascri

是否有可靠的方法来检测从iPad上查看的网页(没有误报)以及通过JavaScript的方向是什么

我认为这有利于第一部分:

var isiPad = navigator.userAgent.match(/iPad/i) != null;
我想我找到了第二部分:

<button onclick="detectIPadOrientation();">What's my Orientation?</button>

<script type="text/javascript">
    window.onorientationchange = detectIPadOrientation;
    function detectIPadOrientation () {
        if ( orientation == 0 ) {
            alert ('Portrait Mode, Home Button bottom');
        } else if ( orientation == 90 ) {
            alert ('Landscape Mode, Home Button right');
        } else if ( orientation == -90 ) {
            alert ('Landscape Mode, Home Button left');
        } else if ( orientation == 180 ) {
            alert ('Portrait Mode, Home Button top');
        }
    }
</script>
我的方向是什么?
window.onorientationchange=检测方向;
函数检测方向(){
如果(方向==0){
警报(“纵向模式,主页按钮底部”);
}否则如果(方向==90){
警报(“横向模式,主页按钮右侧”);
}否则如果(方向==-90){
警报(“横向模式,左主按钮”);
}否则如果(方向==180){
警报(“纵向模式,主页按钮顶部”);
}
}

我不知道它是否适用于所有iPad,包括新的更小的iPad。所以我的问题是:这些功能在所有iPad上都能可靠工作吗?是否会出现误报?

依赖用户代理字符串从来都不是一个好主意,因为它可能被欺骗。然而,你应该考虑阅读“响应性网页设计”

我建议您使用jQuery。我有一种感觉,方向要么是横向的,要么是纵向的。我认为操作系统足够聪明,可以根据你拿着设备的方式来知道朝上的方向

考虑这个jQuery,这可能是您想要的

$(window).resize(function() {
    /*  This function should be triggered when the orientation 
        changes since orientation essentially changes the window size. */

    if($(window).width() == ipadLandScapeWidth) {
        //Do this in landscape mode.
    } else {
        //Do this in portait mode.
    }
});

为什么您需要知道脚本是在iPad上运行的,为什么不简单地评估您想要实现的功能的支持?通常是一个比,更好的计划。看看这个,我希望它只在iPad上工作,而不是在其他同样大小的设备上工作。@Billymon,就像我说的,关于用户代理,它可以被欺骗,所以一个精通技术的用户可以在他们的iPad上欺骗用户代理,例如,更改为Internet Explorer的用户代理,因此,你的解决方案行不通。同样,有些人可能会在IE中欺骗他们的用户代理字符串,使其使用iPad用户代理,因此,您的解决方案将在IE中工作。您将面临的另一个问题是,用户代理可能因浏览器而异,因此这可能在iPad上的Safari中工作,但在iPad上的Opera中不起作用。@Billymon,看看这个…这可能会有帮助…但看起来他们仍然在使用用户代理@series0ne,我一直不明白这个论点。如果有人在欺骗他们的用户代理,谁会在乎他们得到了什么结果?我们的责任是向真正的用户提供工作站点,而不是欺骗他们的用户代理。@Hainesy,说得好,我喜欢它-你说得对,我们应该向真正的用户提供工作站点,而不是欺骗他们的UA,但在这种情况下,OP希望该站点只在iPad上工作。因此,使用UA可能是不够的,因为我可以在我的PC上欺骗FireFox,使其拥有iPad UA,在这种情况下,该网站可能在非目标平台上工作。其次,假设苹果发布了一个新版本的Safari,带有一个新的UA,这与OP的UA挑战不匹配——他们的代码将被破解。虽然我同意你说的,但UA在我看来太脆弱了!