将javascript变量发送到框架中

时间:2014-12-03 19:36:30

标签: javascript html frameset

我试图将通过网址发送的一些动态参数组合到一个框架中,但没有任何效果。在标签里面,在外面,之前,之后尝试过它们......有人能说清楚这个吗?

顶部框架上的网址为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>

感谢您的帮助!

更新:打开Chrome的Javascript控制台并插入命令后:

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

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

2 个答案:

答案 0 :(得分: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的{​​{1}}标记中。

另外,作为抬头:如果有人在没有查询字符串的情况下请求主框架集页面,或者那里没有head参数,那么country会返回-1,最后你会得到废话在您的indexOflanguage变量中。您需要提供一种更强大的方法来获取该信息。

答案 1 :(得分: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