2014-12-03 80 views
0

我试图将通过URL发送到框架的一些动态参数组合起来,但没有任何效果。试图在标签内部,外部,之前,之后......有人可以点亮这个?将javascript变量发送到框架

顶框上的网址是http://www.someurl.com/someparameters.html?country=EN_US。第一个脚本将获得语言(EN)和市场(美国)。然后,该框架集是使用另一个页面和我们的目标页面构建的,应该使用链接“http://www.someurl.com/somefolders?LANGUAGE=EN&MARKET=US&somefixedparameters=123

调用该目标页面。这是不起作用的框架集的源代码。

<!DOCTYPE html> 
<html> 
<script type="text/javascript"><!-- 
var url = window.location.href; 
var language = url.substr(url.indexOf("country=") + 8,2); 
var market = url.substr(url.indexOf("country=") + 11,2); 
} 
</script> 
<frameset rows="36px,*" frameborder="0"> 
<frame id="main" src="header_cgh.html?country=BR_OP" noresize="noresize" scrolling="no" border="1" bordercolor=white> 
<frame id="flow" src=""> 
</frameset> 
<script type="text/javascript"><!-- 
document.getElementById("flow").src = "http://www.someurl.com/somefolders?LANGUAGE=" + language + "&MARKET=" + market + "&somefixedparameters=123"; 
</script> 
</html> 

感谢您的帮助!

UPDATE:打开浏览器的JavaScript控制台和插入命令后:

document.getElementById("flow").src = "http://www.someurl.com/somefolders?LANGUAGE=" + language + "&MARKET=" + market + "&somefixedparameters=123" 

它返回预期的结果。但它不会自行发生。

+0

试试分享一个jsfiddle。 – taco 2014-12-03 19:37:33

+0

奇怪的是,框架集被加载,第一帧加载。当我打开Chrome并使用控制台复制和粘贴相同的条目|| document.getElementById(“flow”)。src =“http://www.someurl.com/somefolders?LANGUAGE=”+ language +“&MARKET =” + market +“&somefixedparameters = 123”; ||它正确加载。所以,我认为它在某个地方缺少一个“触发器”。 – recacon 2014-12-03 19:56:36

回答

1

更改你的脚本是:

window.onload = function() { 
    var url = window.location.href; 
    var language = url.substr(url.indexOf("country=") + 8,2); 
    var market = url.substr(url.indexOf("country=") + 11,2); 
    document.getElementById("flow").src = "/somefolders?language=" + language + "&market=" + market; 
} 

而且把它放在一个script标签在你head

而且,抬起头:如果有人请求主框架页面没有查询字符串,或者没有在那里country参数,然后indexOf返回-1,和你结束了在你的languagemarket变量废话。你会想出一个更强大的方式来获取这些信息。

+0

太棒了!有用!!非常感谢! – recacon 2014-12-03 20:09:17

+0

感谢您的提醒。我会为此尝试一种解决方法。无论如何,由于该页面正在一个信息亭中运行,并且初始请求将始终通过为该环境创建的快捷方式/链接完成,所以我只需确保它们始终具有此信息。 – recacon 2014-12-04 13:10:28

0

这是一个使用postMessage的例子。看看这个处理你在找什么:

<iframe src="http://a.JavaScript.info/files/tutorial/window/receive.html" id="iframe" style="height:60px"></iframe> 

<form name="form"> 
    <input type="text" name="msg" value="Your message"/> 
    <input type="submit"/> 
</form> 

<script> 

    var win = document.getElementById("iframe").contentWindow 

    document.forms.form.onsubmit = function() { 
    win.postMessage(
     this.elements.msg.value, 
     "http://a.JavaScript.info" 
    ) 
    return false 
    } 

</script> 

http://javascript.info/tutorial/cross-window-messaging-with-postmessage