当 DOM 准备好与他一起工作时,我尝试在重定向到页面(例如“example.com”)后执行 js 函数,但它不起作用。
$(document).ready()
在加载“example.com”之前运行。怎么了?这是我的代码:
window.location = "http://example.com";
$(document).ready(function(){
//DO SOMETHING WHEN PAGE 'example.com' IS LOADED
});
我将非常感谢您的帮助!
最佳答案
你根本无法做你想做的事。当页面更改为 "http://example.com"
时,这会启动一系列事件,最终导致整个 Javascript 上下文停止。您无法在新页面中运行此页面的 Javascript。
当您分配时:
window.location = "http://example.com";
这将启动一个进程,该进程将停止当前页面中 Javascript 的执行。当前页面被卸载,并且与其关联的所有内存都被释放。然后,加载一个新页面,创建一个新的 Javascript 上下文,然后加载并运行该新页面中的 Javascript。
与新页面通信的常用方法是将要在该新页面中运行的 Javascript 放入该新页面,然后向该新页面发送一些参数,以便其 Javascript 可以检测到并做出相应 react 。
例如,您可以这样做:
window.location = "http://example.com?doSomething=whatever";
然后,当加载新页面时,该页面中的 Javascript 可以检查查询字符串以查看是否有任何特殊参数传递给它。如果是,那么 Javascript 可以解析它们并根据这些查询字符串参数决定执行什么行为。
另一种可能性是不使用window.location
。相反,您可以通过 Ajax 获取新的 HTML,然后在当前页面中使用 Javascript 将该新内容插入到当前页面中(或用新内容替换现有内容)。通过 jQuery,您可以使用 jQuery 的 .load()
将 URL 中的内容直接加载到当前页面中的元素中,如下所示:
$("#myDiv").load(someURL);
由于这是 Ajax,因此它具有任何 Ajax 调用可能具有的所有正常跨源限制,因此您无法自由地从其他网站加载页面(除非它们允许跨源访问)。
关于javascript - JQuery - 在 window.location 之后使用 $(document).ready(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35212066/