每次都重定向到移动网站

时间:2013-04-26 13:36:16

标签: javascript redirect mobile web

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

这是我的场景&问题。他们去我的手机网站,然后点击链接转到常规网站。然后他们去访问一个完全不同的网站。如果他们再次输入我的网址去我的网站,它会将他们带到常规网站而不是移动网站。他们每次单独访问我的网站我希望他们被带到手机上。谁能更好的帮助我?谢谢!

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

<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>

2 个答案:

答案 0 :(得分:0)

让我们分析您的JavaScript代码。

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

如果URL包含字符串“skipmobile”,则条件>= 0为true。请注意,将值设置为什么并不重要。它只是寻找字符串“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,&&表示AND。因此,if document.location.hostname.match(/\.mobi$/)正在使用正则表达式从URL中搜索字符串“.mobi”的主机名。所以www.yoursite.mobi会匹配,但www.yoursite.com不会。然后我们有OR条件|| screen.width < 699。因此,如果主机名以“.mobi”结尾,或者如果屏幕尺寸的宽度小于“699”像素,则此条件的第一部分将为真。

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

所以把它们放在一起,如果主机名以“.mobi” OR 结尾,则屏幕宽度小于“699”像素 AND cookie“skipmobile”具有尚未设置,然后使用此代码document.location = "m/"将浏览器定向到移动网站“m /”。

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

答案 1 :(得分:0)

设置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>