23

我有一个将用户重定向到另一个页面的脚本。我想在新页面完全加载后将一些内容加载到新页面上的 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>

我究竟做错了什么?

4

8 回答 8

19

重定向到新页面,但将哈希信号附加到 URL。

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');
    }
});

至少这是粗略的想法。

于 2013-08-04T22:50:35.417 回答
4

正如其他答案中所指出的,您将无法从原始站点执行任何脚本指令。除了使用 PHP 静态创建内容,您还可以使用 HTML 片段作为参数,例如:


// 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));
}
于 2013-08-04T22:49:11.393 回答
4

An easy way to pass data to your page you are redirecting to would be to set some url parameters.

For example:

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

When that page loads you could have a:

$(document).ready(function(){

    var my_param = getUrlParameter('key');
    if(my_param == "value"){
//do your stuff here
}

});


var getUrlParameter = function getUrlParameter(sParam) {
    var sPageURL = decodeURIComponent(window.location.search.substring(1)),
        sURLVariables = sPageURL.split('&'),
        sParameterName,
        i;

    for (i = 0; i < sURLVariables.length; i++) {
        sParameterName = sURLVariables[i].split('=');

        if (sParameterName[0] === sParam) {
            return sParameterName[1] === undefined ? true : sParameterName[1];
        }
    }
};
于 2016-03-11T20:02:53.990 回答
3

你应该跑

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

在此页面上:http ://www.mypage.com/info 。

当您这样做时,window.location.href = 'http://www.mypage.com/info';您将重定向到另一个页面。那条线之后什么都不会发生。您必须改为在已加载页面上的该行之后运行代码。

于 2013-08-04T22:46:48.480 回答
2

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

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

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

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

于 2014-01-27T22:04:13.680 回答
2
window.location = '#/MyPage';
setTimeout(function() {
   //MyCode To Run After PageLoad
});
于 2016-01-03T13:38:15.163 回答
1

您正在重定向浏览器,window.location.href恐怕因为您纯粹只是更改浏览器的位置,所以您不能对要移动到的页面产生任何影响/输入(除非您使用查询字符串参数然后使用某些内容创建内容像 PHP (myurl.php?newcontent=whatever) )

于 2013-08-04T22:45:03.440 回答
1

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

尝试这个,

重定向页面:

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

mypage.com/信息:

js:

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

html:

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

我希望这对您有所帮助,如果您需要进一步的帮助,请告诉我!

于 2013-08-04T22:49:46.870 回答