当 window.location=self.location 不起作用时,通过 AJAX 重新加载页面
Reloading a page via AJAX when window.location=self.location doesn't work
在我的主页上,我得到了:
<ul id="login">
<li> <a id="loginswitch" href="./login-page">log-in</a> | </li>
<li> <a id="signupswitch" href="./signup-page">sign-up</a> </li>
</ul>
通过 MooTools,我通过 id 获取这些锚元素,以便一旦单击它们,它们下方就会弹出一个华丽的div,其中包含登录或注册表单(当然还有停止事件传播的方法)在填写字段后,AJAX 调用将启动 - 这应该创建一个会话并重新加载页面,以便用户将拥有一个视觉对象,他现在已登录并显示用户级控件等。
ajax 调用由 MooTools AJAX 类启动,evalScripts
选项设置为 true。AJAX 页返回脚本代码:
<script type="text/javascript">window.location = self.location;</script>
这个系统运行良好 - 现在我想知道为什么如果我将锚点的href
值更改为href="#"
我的脚本将不再工作?
它与窗户有什么关系吗?
当我单击链接时,即使事件的传播停止,它是否更改了其属性?
window.location = self.location;
此 JavaScript 正在执行。
当它执行时,浏览器被告知将window.location
的值替换为新值。 并非所有浏览器都会在这里做出相同的反应。有些可能会按您的预期工作,但其他人会对此很聪明并比较这两个值。 浏览器知道它在哪个页面上,并且知道您只是要求它转到同一页面。
浏览器缓存
浏览器甚至在缓存中具有当前页面的副本。 它可以与服务器通信,并询问缓存中的页面是否仍然有效。 如果缓存有效,它可能会决定不强制重新加载页面。 在幕后,这发生在 HTTP 标头上。 浏览器和服务器可以通过多种方式通过 HTTP 进行通信。 在这种情况下,您的浏览器会向服务器发送一个快速请求,内容如下:
GET /stackoverflow.com/posts/196643/index.html
HTTP/1.1
Host: www.stackoverflow.com
User-Agent: Mozilla/5.0
If-Modified-Since: Sun, 12 Oct 2008 20:41:31 GMT
这称为条件 GET 请求。 通过说If-Modified-Since,你的浏览器说,"给我那个文件,但前提是它自我上次看到它以来已经被修改了。
长话短说,您还没有明确告诉浏览器重新加载页面。
您可以通过以下方式:
location.reload( true );
"true"是一个可选参数,用于强制重新加载。 浏览器甚至不会查看缓存。它会按照你说的做。
转到页面上的锚点 - 这就是#
表示的 - 不需要重新加载。
如果他们在工作中把这个特殊的任务交给我,我会把它踢回设计中。 除非我们谈论的是安全页面或OpenID登录,否则您不应弹出登录或登录表单。 用户需要学会在页面顶部查找https:,如果看不到它,则永远不要登录。
- window.location.hash = “”;强制在Chrome和Safari上重新加载框架集
- 我能确定这个页面赢了吗;如果我使用`location.replace`来更改哈希,则不会重新加载
- 获取 window.location.reload 以在 Ionic 中仅加载一次
- 使用location时Javascript未重新加载页面.请使用相同的URL再次加载
- location.reload会重新加载大部分内容
- 页面加载方式不同,window.location与href:
- location.reload(true)在SagePay iframe中重新加载IE10/11中的父级
- window.location.replace.继续重新加载页面,如何停止
- 在 JQuery 1.8 中重新加载 location.reload 不是默认 #one
- Javascript:在window.location之后重新加载页面
- 当使用Javascript将URL分配给window.frame.location时,PHP页面不会加载
- 如果重新加载了同一页,window.location.replace将不起作用
- 未能加载资源javascript window.location
- 从缓存中加载window.location.reload和散列片段在Chrome不工作
- 重新加载iframe src / location,新url在Safari中不工作
- 使用document.location.href加载一组URL's,然后仅在加载页面时执行JS
- 使用window.location.href返回2页并重新加载
- jquery页面未重新加载(location.reload)
- 可以在窗口之后调用函数.location已经加载了新的URL
- JS - location在函数执行后延迟重新加载