2012-04-26 64 views
1

我正在使用window.location.replace()重定向到一个新页面(与原始域相同的域)。但是,我需要在重定向完成后运行一些jQuery代码。我不能简单地嵌入我想要在目标页面上运行的代码,因为它需要关于当前上下文的数据。jQuery中的window.location更改后准备好文档

有没有类似于document.ready的设置触发器的方法,但在新页面上?

我的第一个想法是

window.location.replace(data.redirect); 
$(document).ready(
    function() { 
    (use data variable from outer context) 
    } 
); 

但随着功能将当前文档中运行,这将不起作用。

这甚至可能吗?

+0

没有没有。一旦你离开了页面,你的javascript变量就消失了。 – 2012-04-26 19:57:19

+0

澄清一下:我可以将代码嵌入页面data.redirect中,但仍然需要将数据传递到该页面。 – Ezequiel 2012-04-26 19:57:49

+0

@JamesMontagne我看到了,我很害怕这种情况... – Ezequiel 2012-04-26 19:59:16

回答

1

不,不可能,但是如果你在同一个域中,你有没有考虑过把这些信息放入cookie中?

+0

谢谢。我做到了。 – Ezequiel 2012-04-26 20:34:53

2

如果您无法将您的代码放到目标页面上,则无法在目标页面上执行您的代码。有你在那里,让您的数据,虽然几个方面:

  1. 后到新的页面
  2. 将它随身携带在通过查询字符串
  3. 加载到一个cookie在
  4. 店呢一个会话变量

除了这几种方法之外,您不会有很多其他选项可以让您的数据从A到B.最后两个选项只有在用户停留在您的域/服务器上时才有可能。

4

您应该在URL上附加#datayouneed,并在新页面上通过javascript读取URL的哈希部分。

+0

虽然这是一个选项,但我不确定它是否回答了他的问题。 – gdoron 2012-04-26 19:59:55

+0

是的,我认为这或@chrismarx的答案是要走的路。 – Ezequiel 2012-04-26 20:01:42

0

您可以设置您当前的网址,并且您可以在第二页上阅读它。

在第一页;

window.location.href = "http://second.page#param1=val1&param2=val2" 

在第二页,您可以使用;

if(window.location.hash) {//Something like param1=val1&param2=val2 
    //Do your action 
} else { 
    // Another action 
} 

您可以参考here,了解更多有关哈希