【问题标题】:jQuery - if mobile device redirect then if click the link ignore the first ifjQuery - 如果移动设备重定向然后如果点击链接忽略第一个如果
【发布时间】:2015-02-11 02:25:45
【问题描述】:

我使用此代码将使用移动/平板设备的用户重定向到移动版本 但我想当他们点击“转到完整版”时忽略第一个 if。 当前,当用户单击该链接时,他们会再次重定向到移动版本。

if( /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) ) {
window.location.href = "http://m.website.com";
}

if($('#ClickFull').click(function()){
// i don't know what can ignore the above if.
}

我想我应该把我的代码放在一个函数中,如果我是对的,怎么做?

【问题讨论】:

  • 设置一个cookie。读取if 语句中的cookie。如果 cookie 未设置为显示整页的任何值,则执行 window.location.href,否则不执行任何操作。
  • 您可以在他们点击完整站点时设置 cookie,并且您可以在第一个 if 中检查该 cookie。就这么简单。
  • 设置一个cookie。读取if 语句中的cookie。如果 cookie 未设置为显示整页的值,则执行 window.location.href,否则不执行任何操作。
  • 只需将查询字符串附加到 url,例如 ?m=false 当有人单击完整版链接时,然后将其添加到您的条件以进行移动设备检查,例如 if( /Android| webOS|iP.... && !location.search.match(/m=false/gi) ) { ... }
  • 基于用户代理的重定向是一件可怕的事情。使用“javascript 媒体查询”来检查浏览器的功能:developer.mozilla.org/en-US/docs/Web/API/Window.matchMedia

标签: javascript jquery redirect execute


【解决方案1】:

您需要在页面重新加载之间保留有关用户偏好的信息。一种方法是使用cookie。但我发现 WebStorage 使用起来更方便。在您的情况下,sessionStorage 将是理想的。像这样的:

if (!sessionStorage.fullVersion && /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)) {
    window.location.href = "http://m.website.com";
}

$('#ClickFull').click(function() {
    sessionStorage.fullVersion = true;
});

sessionStorage 将在会话结束后被清除,例如浏览器选项卡已关闭。如果您需要记住用户的选择,请改用localStorage

【讨论】:

  • 我用了这个方法,但是没用。他们再次重定向到移动版本。一个问题:我应该将此代码用于完整版或移动版或两者兼而有之? @dfsq
猜你喜欢
  • 1970-01-01
  • 2016-11-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-31
  • 1970-01-01
相关资源
最近更新 更多