当前位置:  开发笔记 > 编程语言 > 正文

将值传递给窗口中的iframe

如何解决《将值传递给窗口中的iframe》经验,为你挑选了5个好方法。

我需要向iframe发送一个值.

iframe存在于当前窗口中.我怎样才能做到这一点?

我需要在包含iframe的父窗口中使用javascript.



1> Aaron Digull..:

首先,您需要了解您有两个文档:框架和容器(包含框架).

从容器操纵框架的主要障碍是框架异步加载.您不能随时访问它,您必须知道它何时完成加载.所以你需要一个技巧.通常的解决方案是window.parent在框架中使用"向上"(进入包含iframe标签的文档).

现在,您可以调用容器文档中的任何方法.这种方法可以操作框架(例如调用一些JavaScript代码你需要的参数框架).要知道何时调用该方法,您有两种选择:

    从frame.onload框架中调用它.

    将一个脚本元素作为最后一个东西放入框架的HTML内容中,您可以在其中调用容器的方法(左侧作为读者的练习).

所以框架看起来像这样:


...

像这样的容器:




@testing:当然不是.与浏览器中的任何其他内容一样,它受同源策略的约束.

2> Hexagon Theo..:

取决于您的具体情况,但如果在页面的其余部分加载可以部署iframe ,您只需使用查询字符串,即:


然后在some_page.html的某个地方:



我想要感谢你的回答 - 它解决了一个关键的节目塞!如果您为此问题添加答案,请将其标记为正确:http://stackoverflow.com/questions/2855599/flex-flash-4-externalinterface-call-trying-to-get-a-string-from-html-to -actions
最好的部分是::它适用于跨域。最适合创建可以在不同站点中使用不同配置进行初始化的游戏。很棒的答案。帮助很大。

3> 小智..:

这是另一种解决方案,如果帧来自不同的域,则可以使用.

var frame = /*the iframe DOM object*/;
frame.contentWindow.postMessage({call:'sendValue', value: /*value*/}, /*frame domain url or '*'*/);

在框架本身:

window.addEventListener('message', function(event) {
    var origin = event.origin || event.originalEvent.origin; // For Chrome, the origin property is in the event.originalEvent object.
    if (origin !== /*the container's domain url*/)
        return;
    if (typeof event.data == 'object' && event.data.call=='sendValue') {
        // Do something with event.data.value;
    }
}, false);

但是,不知道哪些浏览器支持此功能.



4> wombleton..:

使用frames集合.

从链接:

var frames = window.frames; // or // var frames = window.parent.frames;
for (var i = 0; i < frames.length; i++) { 
  // do something with each subframe as frames[i]
  frames[i].document.body.style.background = "red";
}

如果iframe有名称,您还可以执行以下操作:

window.frames['ponies'].number_of_ponies = 7;

只有在同一个域中提供两个页面时,才能执行此操作.


这可以从iframe到具有不同域的父框架完成吗?

5> Haji..:

还有两个选项,它们不是最优雅但可能更容易理解和实现,特别是在iframe需要的数据只是几个变量而不是复杂对象的情况下:

使用URL片段标识符(#)

在容器中:


在iFrame中:


使用iFrame的名称

(我不喜欢这个解决方案 - 它滥用了name属性,但它是一个选项,所以我提到它的记录)

在容器中:


在iFrame中:


推荐阅读
mylvfamily
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有