如何在调用window.location.href后执行脚本?

时间:2013-08-04 22:42:09

标签: javascript jquery

我有一个脚本可以将用户重定向到另一个页面。我想在新页面完全加载后将一些内容加载到新页面上的div中。我怎样才能做到这一点。以下不起作用。

function goToPage() {
    window.location.href = 'http://www.mypage.com/info;
    $('.my_class').load('my/url/path/with/content/to/load');
}

新加载的页面(http://www.mypage.com/info)包含以下div:

<div class="my_class"></div>

我做错了什么?

8 个答案:

答案 0 :(得分:15)

重定向到新页面,但是向网址附加哈希信号。

function goToPage() {
    window.location.href = 'http://www.mypage.com/info#load-stuff;
}

然后在加载目标页面时,评估该哈希信号的URL检查。

function pageLoad() {
    if (window.location.hash === "#load-stuff") {
        $('.my_class').load('my/url/path/with/content/to/load');
    }
}

如果您的应用程序使用jQuery,它看起来像:

$(function () {
    if (window.location.hash === "#load-stuff") {
        $('.my_class').load('my/url/path/with/content/to/load');
    }
});

至少这是个粗略的想法。

答案 1 :(得分:4)

正如其他答案中所指出的,您将无法从原始网站执行任何脚本说明。您可以使用HTML片段作为参数,而不是使用PHP静态创建内容。像这样:


// in the original page:
function goToPage() {
    window.location.href = 'http://www.mypage.com/info#my/url/path/with/content/to/load';
}

// in http://www.mypage.com/info:
$( document ).ready(function () {
    if(window.location.hash)
        $('.my_class').load(window.location.hash.substring(1));
}

答案 2 :(得分:2)

你应该跑

$('.my_class').load('my/url/path/with/content/to/load');
本页

http://www.mypage.com/info

执行window.location.href = 'http://www.mypage.com/info';时,您将重定向到其他页面。那条线之后什么都不会发生。您必须在加载的页面上的该行之后运行代码。

答案 3 :(得分:2)

将数据传递到您重定向到的页面的简单方法是设置一些url参数。

例如:

signupform.py

当该页面加载时,您可以拥有:

window.location.href - "http://youpage.com/?key=value"

答案 4 :(得分:1)

你可以通过几种不同的方式做到这一点。尝试利用localstorage API并使用名称和值对(或其中一些)传递信息或内容,并在接收端解压缩。

在您要重定向到的页面上,检查localstorage密钥,然后将其内容(上述名称和值对)加载到div中。

作为替代方案,您可以编写一个可以部署到多个页面的脚本文件;检查window.location.href并相应地有条件地加载脚本。如果您在重定向页面上,则可以运行您喜欢的任何脚本。这样做的好处是你仍在使用一个JS文件 - 不需要对代码进行分段(当然,假设你正在使用的页面都在同一个站点上)。

如果你不想要或者哈希,你不需要对PHP做任何事情......如果你可以利用HTML5及其相关的API,那么有一些漂亮的工具可以解决这个问题。

答案 5 :(得分:1)

window.location = '#/MyPage';
setTimeout(function() {
   //MyCode To Run After PageLoad
});

答案 6 :(得分:0)

您正在使用window.location.href重定向浏览器,我担心您只是更改浏览器的位置,您不能在要移动的页面上有任何影响/输入(除非您使用查询字符串参数,然后用PHP(myurl.php?newcontent = whatever))

之类的东西创建内容

答案 7 :(得分:0)

重定向后,您无法再在该页面上执行脚本,因为页面已卸载。

试试这个,

重定向页面:

function goToPage() {
window.location.href = 'http://www.mypage.com/info;
}

mypage.com/info:

JS:

$('.my_class').load('my/url/path/with/content/to/load');

HTML:

<div class="my_class"></div>

我希望这能帮到你,如果你需要进一步的帮助,请告诉我!