Jquery mobile 当在桌面上单击链接时,我可以让jQuery Mobile遵守Shift和Ctrl键吗?

Jquery mobile 当在桌面上单击链接时,我可以让jQuery Mobile遵守Shift和Ctrl键吗?,jquery-mobile,Jquery Mobile,我正在建立一个需要“快乐”的网站,用户将主要在手机和平板电脑上,但也有一些会在个人电脑上 通过“劫持”jQM实现AJAX导航的链接,它们基本上破坏了“Shift-click在新窗口中打开,Ctrl-click在新选项卡中打开”的功能。我想为我们的PC用户保留此功能 这不是什么大问题,因为绝大多数用户都不知道这一点,但就我个人而言,当我使用一个不尊重这一点的网站时,它会让我非常恼火,所以我想尊重它 有没有办法让jQM起作用 谢谢 丹尼尔您可以采用响应式设计方法。桌面用户不应看到基于jQM的网站 您

我正在建立一个需要“快乐”的网站,用户将主要在手机和平板电脑上,但也有一些会在个人电脑上

通过“劫持”jQM实现AJAX导航的链接,它们基本上破坏了“Shift-click在新窗口中打开,Ctrl-click在新选项卡中打开”的功能。我想为我们的PC用户保留此功能

这不是什么大问题,因为绝大多数用户都不知道这一点,但就我个人而言,当我使用一个不尊重这一点的网站时,它会让我非常恼火,所以我想尊重它

有没有办法让jQM起作用

谢谢

丹尼尔

您可以采用响应式设计方法。桌面用户不应看到基于jQM的网站

您可以使用with来实现以下方法:

test: Modernizr.mq( "only all and (max-width: 640px)" ),
yep: {
    "jqmcss": "css/jquery.mobile-1.3.1.min.css",
    "mcss": "css/mobile.screen.css"
},
nope: {
    //desktop
    "scss": "css/desktop.screen.css"
},
callback: {
    //use the callbacks from above and load jQuery Mobile 1.3.1
    "jqmcss": function( url, result, key ) {
        yepnope({
            load: "js/libs/jquery.mobile-1.3.1.min.js"
        });
    },
    "scss": function( url, result, key ) {
        // do something
    }
}
您可以使用Modernizer以及媒体查询和触摸检测来检测您是在基于触摸的移动设备上,还是在低于480px的速度上。在每种情况下,都会动态和异步加载相应的CSS和JS文件。jQM仅在检测到移动设备时加载。请注意,上述代码不完整。我添加它是为了让大家了解这种方法是如何工作的

在我看来,响应式设计是正确的方式。但是,当您检测到自己在桌面上时,可能可以尝试以下“脏”解决方案:

按住Ctrl键并单击:

$('a').click(function(event){
    if (event.ctrlKey && event.button === 0) {
        event.preventDefault();
        window.open($(this).attr("href"), '_blank');
    }
});
或者,您可以使用以下命令禁用锚点的Ajax转换:

$('a').attr("data-ajax", "false");
我希望这会有所帮助。

实际上,我也希望桌面上有jQM带来的大部分好处(特别是ajax导航,它可以极大地提高速度),因此桌面版绝对应该使用jQM。至于“脏”的解决方案,我有没有办法区分Ctrl和Shift?(新选项卡与新窗口)。现在,我可以指定window.open是打开选项卡还是窗口吗?