window.location.href之后的代码执行吗

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了window.location.href之后的代码执行吗相关的知识,希望对你有一定的参考价值。

out.println("<script language='javascript'>alert('你好');window.location.href='login.html';</script>");
flag=false
就是想问一下,这个flag=false还会执行么?是不是一跳转之后就把后面的完全忽略?谢
我想也应该是不再走flag=false,但是书上的结果确实是走了它。还是谢你了!!!

flag=false不会执行的。因为页面已经跳转到login.html

大哥。不可完全信赖书本知识。你可以在后面加个alert()弹出对话框。如果弹出就说明走了啊。不要完全信从书本。
参考技术A 会执行,你只需要打断点调试一下就知道了

IE 与 window.location.href 不兼容

【中文标题】IE 与 window.location.href 不兼容【英文标题】:IE incompatability with window.location.href 【发布时间】:2012-04-29 10:00:34 【问题描述】:

我正在使用来自 AJAX 发布请求的回调来导航到新页面,但它不适用于 Internet Explorer。我的代码如下:

$.ajax( 
    type: "POST",
    url: phpUrl,  
    data: data,  
    async: false, 
    success: function()        
         if (navigator.appName == 'Microsoft Internet Explorer')   window.location.href("/step2.php")
         else window.location.href = "/step2.php"             
    ,  
    dataType:'json'         

); 

这在 FF/Safari/Chrome 上运行良好,但是当我在 IE 上测试它时它不起作用。有没有更好的重定向到新页面的方法?我正在使用async:false,因为如果我不使用回调,我的数据不会加载到 Chrome/Safari 上,因为页面会在 POST 请求完成之前更改。

【问题讨论】:

【参考方案1】:

IE 只喜欢完整的 url。

var fullURL = 'http://www.your_site.com/step2.php';

$.ajax( 
    type: "POST",
    url: phpUrl,  
    data: data,  
    async: false, 
    success: function() 

        window.location.href(fullURL);

    ,  
    dataType:'json'         
); 

【讨论】:

【参考方案2】:

window.location.href = "/step2.php" 就好了。

【讨论】:

hmmm,除了 IE 什么都可以!你有什么想法为什么它不能在这个浏览器上运行?【参考方案3】:

是括号。 href 不是一个函数,所以尝试调用它——window.location.href("/step2.php")——是一个TypeError

像下一行一样分配给href,或者更好的是,使用location.assign()

location.assign('/step2.php');

虽然您可以直接分配给 location 的属性 (location.href='...';) 以使浏览器导航,但我建议不要这样做。

在内部,这样做只是调用location.assign(),然后分配给属性does not always behave the same in all browsers。


关于,async:false永远不要这样做。如果您发出同步 XHR 请求,you're doing it wrong。 8.4% 报告的 IE9 挂起是由于同步 XHR 阻塞了浏览器。

鉴于您在回调中有它,在 POST 完成之前不会分配给 location,所以我不确定您所说的“页面会在 POST 完成之前更改”是什么意思。 (您忘记取消表单的submit了吗?)

【讨论】:

奇怪。 location.assign("/step2.php"); 也不能在 IE 上运行,但可以在 FF/Safari/Chrome 上运行。我最初尝试将它用作函数是基于我阅读的文档(@Hexxagonal 也提到过)。 我同意你关于 async 的观点 - 我已经删除了它。感谢您的建议。 从不是一个强词。它有时对于同步 ajax 是必要且有用的。但是,你的观点很好。在需要阻塞的情况下,开发人员应注意明显地表明某些事情仍在发生,即 ajax 加载程序 gif。 @peter:这是我对never这个词感到满意的情况。关键是,如果您使用同步 XHR,您无法显示加载程序 gif,因为 XHR 请求会阻止您的页面呈现。老实说,我认为没有不能使用异步 XHR 的情况;同步 XHR 有太多缺点,无法证明在异步上使用它是合理的。 我将它与 window.location.href 混合使用...认为它是 ie 的后备方案,它使我的问题消失了。它现在正确重定向,而不是通过其他脚本摸索

以上是关于window.location.href之后的代码执行吗的主要内容,如果未能解决你的问题,请参考以下文章

js延迟window.open window.location几秒之后跳转

window.location.href 无法跳转

防止网页被嵌入框架的代码

window.location.href的用法

js跳转代码怎么延迟 window.location.href="index.html"

关于微信端不支持window.location.reload()