2

我想用特定的 URL 标记我的移动访问者,例如http://www.example.com.index.html?source=mobile我使用此脚本将访问者重定向到给定的 url

<script type="text/javascript">
<!--
if (screen.width <= 800) 
{
    window.location ="http://www.example.com/index.html?source=mobile";
}

//-->
</script>

但是当我使用这个脚本时,页面会一次又一次地加载,所以我试图在这个脚本中添加另一个条件,但我很困惑如何让第二个条件一次又一次地停止加载。

<script type="text/javascript">
<!--
if (screen.width >= 800) 
{
    window.location ="http://www.example.com/index.html?source=mobile";
}
 Else if (document.referrer ="http://www.example.com/index.html?source=mobile")
{
    //stop execution here
}


//-->
</script>

如果第二个条件为真,现在请有人帮我停止执行 javascript。

提前致谢。

4

5 回答 5

2

将语句包装在匿名函数中:

(function(){
    if (screen.width >= 800)  {
        window.location = "http://www.example.com/index.html?source=mobile";
    }else if (document.referrer == "http://www.example.com/index.html?source=mobile") {
        return;
    }
});

尽管其他答案声称,您只能在函数内使用 return。

我还假设您将在 if 语句下添加更多代码,否则停止执行是没有用的。

您的代码存在一些问题:

  1. 你用大写 E 拼写 else 并且 is 应该是小写
  2. 在 else if 语句中,您没有使用两个等于

上述代码中修改了这两个问题

于 2013-08-03T13:09:54.500 回答
1

您应该直接在 php/whateveryouuse 中检测移动浏览器,有很多移动检测器脚本(检查用户代理如何检查请求是来自 php 中的移动设备还是计算机

现在的方式:用户进入站点,如果分辨率低,他将被重定向到......同一页面!(加载网站两次)

如果您检测到移动服务器端:用户只进入网站一次 <- 即使禁用了 javascript,速度也更快并且可以工作

此外,如果您只关心浏览器的分辨率,您应该阅读一些有关响应式设计的内容

于 2013-08-03T13:07:49.317 回答
1

怎么样

if (screen.width >= 800 && document.referrer !="http://www.example.com/index.html?source=mobile") 
{
    window.location ="http://www.example.com/index.html?source=mobile";
}

您现在设置它的方式将无法作为第一个如果始终满足,您应该按照我在此处的建议进行操作,或者将文档引用条件放在首位(另外您需要 == 而不是 =)。

于 2013-08-03T12:34:10.723 回答
0

用于window.location.href获取 URL

你有一个错字:else if..不是 Else if

 if (screen.width >= 800 && window.location.href !="http://www.example.com/index.html?source=mobile") 
{
    window.location.href ="http://www.example.com/index.html?source=mobile";
}

在停止执行的情况下,

else if (window.location.href ="http://www.example.com/index.html?source=mobile")
        {
            return;//to stop execution here..use return;
        }
   // This condition is unnecessary though

注意:两者之间存在差异return true,return false and return

return false:停止事件“冒泡”。停止执行

return true:继续执行。

返回;

这是 JavaScript 所基于的 ECMA 262 标准关于返回的引用;如前所述,结果是“未定义的”。

如果 ECMAScript 程序包含不在 FunctionBody 中的 return 语句,则认为它在语法上不正确。return 语句使函数停止执行并向调用者返回一个值。如果省略 Expression,则返回值未定义。否则,返回值为 Expression 的值。

于 2013-08-03T12:27:03.580 回答
0

IE8、IE8+、IE11、火狐、Chrome:

<script>
  ... I wana cancel here ...
  if (document.execCommand) document.execCommand('Stop');   
  if (window.stop) window.stop();   
</script>
于 2016-12-14T22:38:55.257 回答