Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/423.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将javascript变量发送到帧中_Javascript_Html_Frameset - Fatal编程技术网

将javascript变量发送到帧中

将javascript变量发送到帧中,javascript,html,frameset,Javascript,Html,Frameset,我试图将一些通过URL发送的动态参数组合到一个框架中,但没有任何效果。在标签里面,外面,之前,之后都试过了。。。有人能解释一下吗 顶部框架上的URL为。第一个脚本将获得语言(EN)和市场(US)。然后,使用另一个页面和我们的目标页面构建框架集,应该使用链接“”调用目标页面 这是无法工作的框架集的源代码 <!DOCTYPE html> <html> <script type="text/javascript"><!-- var url = window.l

我试图将一些通过URL发送的动态参数组合到一个框架中,但没有任何效果。在标签里面,外面,之前,之后都试过了。。。有人能解释一下吗

顶部框架上的URL为。第一个脚本将获得语言(EN)和市场(US)。然后,使用另一个页面和我们的目标页面构建框架集,应该使用链接“”调用目标页面

这是无法工作的框架集的源代码

<!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>

它返回了预期的结果。但是它不会单独发生。

下面是一个使用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>

var win=document.getElementById(“iframe”).contentWindow
document.forms.form.onsubmit=函数(){
博文(
this.elements.msg.value,
"http://a.JavaScript.info" 
)
返回错误
}

将脚本更改为:

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;
}
并将其放入
头部的
脚本
标记中


另外,作为提示:如果有人请求主框架集页面时没有查询字符串,或者其中没有
country
参数,那么
indexOf
返回-1,您的
语言和
market
变量就没有意义了。您需要想出一种更可靠的方法来获取这些信息。

尝试共享一个JSFIDLE。奇怪的是,框架集被加载,第一个框架被加载。当我打开Chrome并使用控制台复制和粘贴相同的条目时| | document.getElementById(“flow”).src=“+language+”&MARKET=“+MARKET+”&somefixedparameters=123”;|它加载正确。所以,我认为它的某个地方缺少了一个“触发器”。谢谢你的提醒。我将尝试解决这个问题。无论如何,由于页面是在信息亭中运行的,初始请求将始终通过为该环境创建的快捷方式/链接完成,因此我只需确保他们始终具有此信息。
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;
}