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

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

 

我究竟做错了什么?

重定向到新页面,但是向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 (document.URL.indexOf('#load-stuff') === -1) { $('.my_class').load('my/url/path/with/content/to/load'); } }); 

这至少是个粗略的想法。

正如其他答案中所指出的,您将无法从原始站点执行任何脚本指令。 您可以使用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)); } 

你应该跑

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

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

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

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

例如:

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

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

 $(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]; } } }; 

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

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

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

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

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

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

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

试试这个,

重定向页面:

 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:

 

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