如果条件为真,如何停止执行javascript?

时间:2013-08-03 12:25:25

标签: javascript

我想用http://www.example.com.index.html?source=mobile这样的特定网址标记我的移动访问者我使用此脚本将访问者重定向到指定的网址

<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,如果第二个条件为真。

提前致谢。

6 个答案:

答案 0 :(得分: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";
}

你现在设置它的方式不会像第一个那样永远满足,你应该像我在这里建议的那样做,或者先把文档引用条件放在第一位(加上你需要== not =)。

答案 1 :(得分:1)

你应该直接在php / whateveryuse中检测移动浏览器,有很多移动探测器脚本(检查用户代理how to check if the request came from mobile or computer in php

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

如果你检测到移动服务器端:用户只进入网站一次&lt; - 更快,即使禁用了javascript也能正常工作

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

答案 2 :(得分:1)

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

(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拼写,应该是小写的
  2. 在else if语句中你没有使用两个等于
  3. 上述代码中修改了两个问题

答案 3 :(得分:0)

使用window.location.href获取网址

你有一个拼写错误: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

之间存在差异

返回false:阻止事件“冒泡”。执行操作

返回true :继续执行。

<强>返回;

以下是ECMA 262标准的引用,该标准基于JavaScript,返回;如上所述,结果是“未定义”。

  

ECMAScript程序在语法上被认为是不正确的   包含不在FunctionBody中的return语句。一个   return语句导致函数停止执行并返回a   对来电者的价值。如果省略Expression,则返回值为   未定义。否则,返回值是Expression的值。

答案 4 :(得分:0)

IE8,IE8 +,IE11,Firefox,Chrome:

<script>
  ... I wana cancel here ...
  if (document.execCommand) document.execCommand('Stop');   
  if (window.stop) window.stop();   
</script>

答案 5 :(得分:-1)

如果您只是想暂时停止任何javascript执行,那么您可以使用alert();功能 它将停止进一步执行,直到用户选择继续它,在你的情况下似乎你不想使用这个技巧。 所以我想这段代码可以满足你的问题。

<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")
{
   alert("Hi");
   skip();
   alert("Bye");
}

由于您的浏览器不会看到 skip()函数的任何定义,它将终止您的Javascript语句的进一步执行。