2012-07-20 65 views
3

奇怪的问题。我正在使用jQuery .postMessage()将邮件从安全发送给父级。具体而言,我发送一个URL并确认父母正在接收该URL - 但是,当我尝试将window.location设置为该URL时,没有任何反应。window.location - javascript - 不工作

的发送网址:

http://mydomain.com/shop/507870?nav=ln-474#/shop/507870?gnrefine=1*COLOR_FAMILY*Brown%5E1*CLSR_TYP*Lace-Up%5E 

实际的URL:

http://mydomain.com/shop/507870?nav=ln-474#/shop/507870?gnrefine=1*COLOR_FAMILY*Brown%5E1*CLSR_TYP*Lace-Up%5E 

他们相匹配。然而,在Chrome中,如果我做一个console.log(loginConfig.redirectURL);我得到:

http://mydomain.com/shop/507870?nav=ln-474#/shop/507870?gnrefine=1*COLOR_FAMILY*Brown%5E1*CLSR_TYP*Lace-Up%5E 

undefined 

所以,我认为window.location是获得undefined值。

任何想法,为什么我会得到两个值,当我使用console.log

更新

逻辑:

if (message[1] != "") { 
       $("#loginDialog").dialog("close"); 
       loginConfig.redirectURL = message[1]; 
       window.location = loginConfig.redirectURL 
       console.log('message: '+loginConfig.redirectURL); 
} 

配置对象:

var loginConfig = { 
redirectURL: "" 
} 

进一步更新:

的window.location的适用于任何URL withou哈哈。因此,出于某种原因,它不会加载任何带有散列的URL。

+0

所以你在你的控制台中有两行?它指向你的JS文件中的哪一行?他们可能不相关。 – 2012-07-20 01:11:50

+2

我看不出我们如何能够在没有看到相关代码的情况下弄清楚这一点。 – jfriend00 2012-07-20 01:20:06

+0

@ jfriend00 - 已更新 – Jason 2012-07-20 01:23:48

回答

3

你的这部分代码是无效的:

var loginConfig = { 
    redirectURL = "" 
} 

它必须是这样的:

var loginConfig = { 
    redirectURL: "" 
} 

如果这导致这使loginConfig从与所需的属性被正确地宣布一个错误,可以部分解释一些意外的行为。你当然应该看看你的浏览器错误日志,看看它是否报告任何错误。

+0

更新 - 我在问题 – Jason 2012-07-20 01:40:07

+1

@Jason有一个错字 - 我建议你应该在'if'块的开始处'message [1]''做一个'console.log()',看看是什么它正在通过消息传递系统。请注意是否有换行符或URL中可能不允许使用的特殊字符。然后,您可以查看是否需要在此if语句之前查看,还是需要查看该问题之后。 – jfriend00 2012-07-20 01:42:55

+0

没有换行符 - url匹配100%,并且是有效的(意味着他们解析)。 – Jason 2012-07-20 02:01:52