【问题标题】:How to use Javascript to link from mobile site to full site without getting redirected back to mobile如何使用 Javascript 从移动站点链接到完整站点而不重定向回移动站点
【发布时间】:2013-02-19 20:19:00
【问题描述】:

我正在从我的完整网站的所有页面调用此脚本,以将移动用户重定向到移动网站 url。 当有人点击链接(来自移动网站)查看完整网站时,问题就出现了......重定向会将用户直接带回移动网站。

<script type="text/javascript">
<!--
if (screen.width <= 700) {
window.location = "http://domain.com";
}
//-->
</script>

如果用户来自移动网站 url,我是否可以在此 JS 代码中添加不允许重定向发生的内容? 在我的情况下,我只想使用 javascript,所以如果有人有 JS 解决方案;那将是我正在寻找的。谢谢。

【问题讨论】:

  • 设置cookie或使用localstorage。
  • 你有一些 js 源代码吗?
  • @AronH w3schools.com/js/js_cookies.asp 你打算做的是在重定向之前存储/读取一个cookie,看看是否已经选择了一个或另一个,从而相应地进行重定位。您也可以根据您的服务器端语言使用会话
  • 我不明白如何将 cookie 脚本添加到这个特定的应用程序。请给我一个例子,我可以直接应用于我最初发布的 JS 重定向。
  • @AronH 在从 mobile.html 返回的链接上,您可以在将访问者返回索引之前执行 setCookie(来自上面的链接)onclick。在此脚本中,您可以在其中一个 IF && getCookie('cookiename') != "what you inserted" 中执行

标签: javascript redirect mobile web


【解决方案1】:

以一种方式,它将记住用户选择 100 天。 http://www.w3schools.com/js/js_cookies.asp

使用我提供的链接中的功能:然后更改此 if;

<script type="text/javascript">
<!--
if (screen.width <= 700 && getCookie("mobileRedirected")!="true"){
window.location = "http://domain.com";
}
//-->
</script>

在返回该页面的链接上执行:

<a href="#" onclick="setCookie('mobileRedirected','true',100);document.location='index.html';">LINK</a>

下次用户开始索引时,它会知道它已经点击离开 mobile.html

也就是说,如果您希望用户能够在网站之间进行选择,否则(仅显示一次移动设备)您可以这样做:

   <script type="text/javascript">
    <!--
    if (screen.width <= 700 && getCookie("mobileRedirected")!="true"){
setCookie('mobileRedirected','true',100);
    window.location = "http://domain.com";
    }
    //-->
    </script>

并一起跳过链接代码

以上代码的完整工作示例

   <script type="text/javascript">
   function setCookie(c_name,value,exdays){
var exdate=new Date();
exdate.setDate(exdate.getDate() + exdays);
var c_value=escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString());
document.cookie=c_name + "=" + c_value;
}
function getCookie(c_name){
var i,x,y,ARRcookies=document.cookie.split(";");
for (i=0;i<ARRcookies.length;i++){
  x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("="));
  y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1);
  x=x.replace(/^\s+|\s+$/g,"");
  if (x==c_name)    {
    return unescape(y);
    }
  }
}
    if (screen.width <= 700 && getCookie("mobileRedirected")!="true"){
        setCookie('mobileRedirected','true',100);
        window.location = "http://google.com";
    }
    </script>

如果您希望小型浏览器窗口也被重定向,您也可以使用 window.innerWidth。 工作示例链接:http://allanthya.net/cookietest.php

【讨论】:

  • 当我使用我原来的 jscript 时,重定向效果很好。但是,当我使用上面的第二个 jscript 代码块(添加了 cookie 功能)时,重定向不再起作用……我说的是从主站点到移动站点。这是为什么呢?
  • 它只在您第一次访问时有效,否则它有cookie“(仅显示移动一次)”,或者您的脚本中没有setCookie功能。
  • 好吧,即使我清除了 iphone 上的 cookie,它也不会引导我完成从主站点到移动站点的重定向。我在此评论上方使用您的(仅显示移动一次)脚本块,我将“domain.com”替换为我的移动网站 URL,并将整个脚本放在我的页面标题中。我还尝试将它放在一个 .js 文件中,并像这样引用源代码: domain.com/Javascript/mobileredirect.js"></script> 是否有什么我配置不正确,或者有什么让这对我不起作用?非常感谢为您的帮助!
  • @AronH 我已经测试了代码,效果很好,不知道问题出在哪里,但我会用工作示例进行更新
【解决方案2】:

使用来自 MDN 的 cookie 代码:https://developer.mozilla.org/en-US/docs/DOM/document.cookie

点击链接。设置cookie

docCookies.setItem("isMobile","true");

当你检查重定向时,读取 cookie

if (!docCookies.getItem("isMobile"))

【讨论】:

  • 如果我在这里理解正确,请告诉我...所以我需要将这两行放在我的主站点页面上已有的 js 重定向代码下方?
  • 您在进行重定向的地方设置了 cookie。您在执行移动检查的地方执行 if 语句。
  • 我想我明白了...所以我应该将“设置cookie”js放在移动页面上,并将“if语句”添加到主站点页面上我现有的重​​定向js中。请确认这是否正确。感谢您的帮助。
  • 是的,我就是这么说的。
猜你喜欢
  • 2012-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多