javascript - JQuery - 在 window.location 之后使用 $(document).ready()

标签 javascript jquery html

当 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/

相关文章:

javascript - 从插件的辅助功能访问 jQuery 对象

javascript - 在 Angular 中重用部分和 Controller

javascript - ionViewWillEnter错误: URI malformed

Javascript 运行日期时间返回值在 Chrome 中有效,但在 Internet Explorer 中无效

javascript - 使用 jQuery/JS,我可以将 "tie"和一个 JS 对象的属性一起直接赋给表单输入元素的值吗?

javascript - jQuery 选择包含最少文本字符数的段落

jquery - 如何为 popup.html 中的多个不同链接打开并使用同一选项卡

javascript - 如何自动更改html标签的背景?

html - 调整浏览器大小时如何在DIV中隐藏部分HTML文本?使用 CSS)

html - 下拉菜单 - 元素依赖