【问题标题】:How do I redirect with JavaScript? [duplicate]如何使用 JavaScript 重定向? [复制]
【发布时间】:2020-12-06 03:55:31
【问题描述】:

如何使用 JavaScript 从另一个页面重定向到一个页面?

【问题讨论】:

  • 您需要一段 Javascript 来重定向到 CI 视图吗?
  • 和codeignite有关系还是你只是选择了随机标签?
  • 我建议你使用这个URL redirect generator — with no-script & SEO support 它有一个内置的 IE hack 来传递推荐人。
  • location.replace("url");或 window.location.replace("url");

标签: javascript redirect


【解决方案1】:

您可能需要再解释一下您的问题。

当您说“重定向”时,对大多数建议更改 HTML 页面位置的人来说:

window.location = url;

当您说“重定向到函数”时 - 它并没有真正的意义。您可以调用一个函数,也可以重定向到另一个页面。
您甚至可以重定向并在新页面加载时调用一个函数。

【讨论】:

    【解决方案2】:
    • 如果您想模拟某人点击链接,请使用location.href
    • 如果您想模拟 HTTP 重定向,请使用 location.replace

    例如:

    // Similar behavior as an HTTP redirect
    window.location.replace("http://stackoverflow.com");
    
    // Similar behavior as clicking on a link
    window.location.href = "http://stackoverflow.com";
    

    this answer to a duplicate question复制的信息

    【讨论】:

      【解决方案3】:
      window.location.replace('http://sidanmor.com');
      

      这比使用window.location.href = 'http://sidanmor.com';更好

      使用replace() 更好,因为它不会将原始页面保留在会话历史记录中,这意味着用户不会陷入无休止的后退按钮惨败。

      如果您想模拟某人点击链接,请使用 window.location.href

      如果要模拟 HTTP 重定向,请使用 window.location.replace

      例如:

      // similar behavior as an HTTP redirect
      window.location.replace("http://sidanmor.com");
      
      // similar behavior as clicking on a link
      window.location.href = "http://sidanmor.com";
      

      取自这里: How to redirect to another page in jQuery?

      【讨论】:

      • 这绝对是正确的答案,但应该注意replace() 可能并不总是最好的选择。如果在 AJAX 调用完成或某事后重定向,则可能需要将原始页面保留在历史记录中。这真的取决于情况!
      • 这个答案完全是误导!没有“更好”,尤其是没有粗体字的“更好”。使用 replacehref 取决于用例。我个人主要使用href,因为大多数时候我需要让用户导航回来。
      • 这个答案强调了一个重要的细节。与其说是“更好”,不如说一下区别,让读者选择最合适的。无论如何,谢谢你的回答,replace 是我的路要走:P
      【解决方案4】:

      window.location="url"; 相比,location="url"; 更容易做到,我总是使用它

      【讨论】:

      • 我会避免这种情况,因为在某些情况下,变量“位置”不可用,可以创建为全局变量。另外,如果程序员稍微输入错误,他们会创建一个新的全局变量。最好是冗长的。
      【解决方案5】:

      要重定向到另一个页面,您可以使用:

      window.location = "http://www.yoururl.com";
      

      【讨论】:

      • 延迟几秒后如何做到这一点?
      • @JFA 您可以将 window.location 嵌入到超时函数中,如下所示:t1 = window.setTimeout(function(){ window.location = "http://www.yoururl.com"; },3000); 其中 3000 是 3 秒。
      • window.location.href = "示例";可能是更好的做法,因为浏览器策略可能会限制它的使用并阻止它,因为 .location 和 .location.href 并不完全相同。但是在某些情况下,使用 .location 是理想的选择,尤其是在您使用 iframe 等同源策略时。
      • 您能否提供一些示例,说明在需要 if else 条件重定向的情况下该怎么做?
      • window.location.href = "yoururl.com";
      【解决方案6】:

      您不能重定向到函数。您可以做的是在重定向时在 URL 上传递一些标志,然后在服务器端代码中检查该标志,如果出现,则执行该函数。

      例如:

      document.location = "MyPage.php?action=DoThis";
      

      然后在您的 PHP 代码中检查查询字符串中的“action”,如果等于“DoThis”,则执行您需要的任何函数。

      【讨论】:

      • 请记住,这种后端行为容易受到 CSRF 攻击。如果想让它执行服务器端功能,请使用 from 或 ajax 代替您可以将 csrf 令牌放入其中的地方。
      • @nouvist 抱歉,但我不同意。代码只应使用简单的if 检查查询字符串参数“action”是否等于“DoThis”。它没有在查询中使用它,也没有评估它。如果有人选择做其中任何一个,我真的无法控制
      猜你喜欢
      • 2011-01-13
      • 1970-01-01
      • 1970-01-01
      • 2012-03-27
      • 2013-07-15
      • 1970-01-01
      • 1970-01-01
      • 2016-12-28
      相关资源
      最近更新 更多