[英]How can I execute a script after calling 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:
<div class="my_class"></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 (window.location.hash === "#load-stuff") {
$('.my_class').load('my/url/path/with/content/to/load');
}
});
至少这是一个粗略的想法。
正如其他答案中所指出的,您将无法从原始站点执行任何脚本指令。 除了使用 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));
}
你应该跑
$('.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];
}
}
};
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:
<div class="my_class"></div>
我希望这对您有所帮助,如果您需要进一步的帮助,请告诉我!
您可以通过几种不同的方式来做到这一点。 尝试利用 localstorage API 并使用名称和值对(或其中一些)传递信息或内容,然后在接收端解压。
在您重定向到的页面上,检查 localstorage 键,然后将其内容(上述名称和值对)加载到 div 中。
作为替代方案,您可以编写一个可以部署到多个页面的脚本文件; 检查 window.location.href 并相应地有条件地加载脚本。 如果您在重定向页面上,则可以运行您喜欢的任何脚本。 这样做的好处在于您仍然使用一个 JS 文件 - 无需分割您的代码(当然,假设您正在使用的页面都在同一个站点上)。
如果你不想,你不需要对 php 做任何事情,或者散列......如果你可以利用 HTML5 及其相关的 API,有一些漂亮的工具可以解决这个问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.