【问题标题】:Redirect to mobile website every time每次重定向到移动网站
【发布时间】:2013-04-26 13:36:15
【问题描述】:

我使用的是我见过的典型的移动网站重定向脚本,效果很好。我的移动网站上还有一个链接,可以让他们根据需要查看常规网站,而且效果也很好。

这是我的方案和问题。他们访问我的移动网站,然后单击链接访问常规网站。然后他们去访问一个完全不同的站点。如果他们再次输入我的网址以访问我的网站,它会将他们带到常规网站而不是移动网站。每次他们访问我的网站时,我都希望他们被带到手机上。有哪位高手能帮帮我吗??谢谢!

这是我在常规网站上的脚本:

<script type="text/javascript">
    if (document.location.search.indexOf("skipmobile") >= 0) {
        document.cookie = "skipmobile=1";
    } else if ((document.location.hostname.match(/\.mobi$/) || screen.width < 699) && document.cookie.indexOf("skipmobile") == -1) {
        document.location = "m/";
}

这是来自我的移动网站的链接:

<a href="http://www.mywebsite.com/index.html?skipmobile=1">View Full Website</a>

【问题讨论】:

  • 浏览器关闭后是否允许他们进入常规站点?还是只是在他们在一个浏览器会话中时?
  • 即使在浏览器关闭之后。如果我打开一个新窗口,我仍然会被带到常规网站。
  • 啊,那是因为cookie。您最好将“skipmobile”存储为会话。当他们关闭浏览器时,会话将被终止。
  • 感谢您的帮助,但我不希望他们不得不关闭浏览器。即使他们在同一个窗口中第二次返回该站点,我也希望他们访问移动站点。这是给我的一个客户的,这就是他们想要的。
  • 那么你需要做的是在会话或cookie离开页面时终止它们。

标签: javascript redirect mobile web


【解决方案1】:

让我们分解您的 JavaScript 代码。

if (document.location.search.indexOf("skipmobile") >= 0) {

如果 URL 包含字符串“skipmobile”,则条件&gt;= 0 为真。请注意,将值设置为什么并不重要。它只是寻找字符串“skipmobile”的存在。当该字符串在 URL 中时,将设置一个 cookie document.cookie = "skipmobile=1"。如果未找到该字符串,indexOf 将返回 -1

else if ((document.location.hostname.match(/\.mobi$/) || screen.width < 699) && document.cookie.indexOf("skipmobile") == -1)

让我们把它分解成几部分。首先,|| 表示 OR,&amp;&amp; 表示 AND。所以if document.location.hostname.match(/\.mobi$/) 正在使用正则表达式从 URL 中搜索主机名,以查找末尾的字符串“.mobi”。所以 www.yoursite.mobi 会匹配,但 www.yoursite.com 不会。然后我们有 OR 条件|| screen.width &lt; 699。因此,如果主机名以“.mobi”结尾,或者如果屏幕尺寸的宽度小于“699”像素,则此条件的第一部分将为真。

if 语句的下一部分是document.cookie.indexOf("skipmobile") == -1。这是检查名为“skipmobile”的 cookie 是否不存在。注意-1。所以它正在检查 cookie 是否被设置。

综上所述,如果主机名以“.mobi”结尾屏幕宽度小于“699”像素并且cookie“skipmobile”具有未设置则将浏览器定向到移动站点“m/”,使用此代码document.location = "m/"

代码似乎正在检查 cookie 以确定移动网站还是完整网站。因此,当他们离开并返回您的站点时,它会“记住”该设置。

【讨论】:

    【解决方案2】:

    在设置您的 cookie 时 - 特别是不要设置过期日期。这通常被称为“会话 cookie”。浏览器关闭时cookie会自动过期。

    或者更好……

    很简单,根本不设置 cookie。我在代码中看不到任何实际存在 cookie 的地方……只有不存在 cookie 才重要。

    此外,如果您不设置 cookie……就永远不会有 cookie。为什么要浪费代码寻找它?

    试试这个...

    <script type="text/javascript">
    if (document.location.search.indexOf("skipmobile") >= 0)
    {
    document.location = "m/";
    } else if ((document.location.hostname.match(/\.mobi$/) || screen.width < 699))
    {
    document.location = "m/";
    }
    </script>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-31
      • 2014-06-08
      • 1970-01-01
      • 2012-09-06
      相关资源
      最近更新 更多