0

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

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

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

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

2 回答 2

0

让我们分解您的 JavaScript 代码。

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

如果 URL 包含字符串“skipmobile”,则条件>= 0为真。请注意,将值设置为什么并不重要。它只是寻找字符串“skipmobile”的存在。当该字符串在 URL 中时,正在设置 cookie document.cookie = "skipmobile=1"。 如果未找到字符串,indexOf将返回 a 。-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”结尾或者屏幕宽度小于“699”像素并且cookie“skipmobile”尚未设置,则将浏览器定向到移动站点“m/”,使用此代码document.location = "m/"

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

于 2013-04-26T14:06:09.793 回答
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>
于 2013-09-17T04:32:33.503 回答