【问题标题】:window.location Problem in IEIE中的window.location问题
【发布时间】:2011-06-09 18:10:52
【问题描述】:

我有这个简单的代码,在每个浏览器中都可以正常工作,但在 IE(每个版本)中都没有。

 window.setTimeout('window.location = \"http://www.domain/modules/yobilab/copyright/classes/GO_overview.php?refNumb=".$RefNumb."\"', 3000);
            return false;

在每个浏览器中,它都会转到正确的链接

在 IE 中,它还包括它来自的链接,所以它会变成这样:

http://www.domain/PAGEWHEREIWAS/modules/yobilab/copyright/classes/GO_overview.php?refNumb=something

为什么会这样?

它显然会产生 NOT FOUND 错误。

【问题讨论】:

  • 在我看来并不“简单”。 \"http://www.domain/modules/yobilab/copyright/classes/GO_overview.php?refNumb=".$RefNumb."\" 在 JavaScript 中到底是什么意思?
  • 对不起那也是PHP的组合。只看 javascript 代码,忘记 PHP
  • 没有。将 PHP 完全抽象出来,这样我们就可以确定它不会导致您的问题。并在jsfiddle.net 上提供一个现场测试用例来演示该问题。
  • 这看起来令人不安,就像您正在使用 PHP 生成一个 JS 字符串,并且该 JS 字符串被传递给 setTimeout 以成为 evaled。嘎嘎!如果您要在 PHP 中动态构建 URI,请将其存储在变量中,以便更具可读性。如果你打算使用setTimeout,那么传递给它一个函数,而不是一个字符串。
  • 你试过window.location.href = "url/to/goto"吗?

标签: javascript internet-explorer


【解决方案1】:

尝试使用document.location 而不是window.location

【讨论】:

  • 这解决了问题..我会在 4 分钟内接受你的回答 =D 谢谢大家的帮助!
【解决方案2】:

你需要创建一个匿名函数:

setTimeout(function() {window.location = "http://www.domain/modules/yobilab/copyright/classes/GO_overview.php?refNumb=12"}, 3000);

【讨论】:

  • 它实际上做了什么?
【解决方案3】:

在链接前加一个“/”,让 IE 明白它是一个相对链接并强制重定向。

【讨论】:

    【解决方案4】:
    function redirect() { 
         window.location.href = "http://www.domain/PAGEWHEREIWAS/modules/yobilab/copyright/classes/GO_overview.phprefNumb=something"; 
    
    }
    
    setTimeout(redirect, 3000);
    

    【讨论】:

      猜你喜欢
      • 2014-11-25
      • 2010-12-28
      • 2013-09-29
      • 2019-08-10
      • 1970-01-01
      • 2011-07-13
      • 2012-02-07
      • 2018-03-15
      • 2010-11-13
      相关资源
      最近更新 更多