通过ie8中的javascript在iframe和它所属的页面之间进行通信
communication between an iframe and the page its part of through javascript in ie8
我看到了很多这样的问题,但没有发现任何对我的具体情况有帮助的问题,所以如果这个问题看起来重复,我很抱歉。
我有一个网站www.foo.com,里面有一个iframe。当我点击foo.com中的一个标签时,会调用一个javascript函数,将一个新图像传递给iframe以显示用户。iframe与其"父级"之间的通信似乎在除RANDOMIE8PAGES之外的所有浏览器上都能正常工作。我收到以下错误消息"访问被拒绝",浏览器指向已激活的功能。下面是该网站的一段代码,看看它是如何工作的。
iframe:
<iframe scrolling="no" src="foo.com/bar" id="ifram" name="ifram"></iframe>
a标签:
javascript:
if($(this).val() == '242'){
document.getElementById('ifram').style.border='0px';
document.getElementById('ifram').style.background = "url('../product_images/uploaded_images/Flag.jpg')";
document.frames.ifram.document.body.style.backgroundColor="transparent";
这只是一个代码片段,不包括获取图像的ajax调用的整个过程,但不确定ajax是否是问题的一部分。我在firefox中得到一个未定义的错误,但函数仍然会启动。我想我只需要为firefox使用window.frames。
总的来说,如果能就如何解决这一问题提供任何帮助,我们将不胜感激。我想知道是否存在与浏览器设置有关的安全问题,或者这是否是我编码的一部分。
提前感谢
需要注意的是,如果您的iframe标记位于位于http://www.foo.com
的页面上,但iframe指向http://foo.com
,则会被视为沙盒违规,您将被拒绝访问。请确保您指向的域与页面所在的域相同。您也可以在iFrame-src标记中使用相对URL,这样您就可以将其更改为src="bar.php"
(不包含任何域信息)。
您不需要在document.frames.ifram.document.body.style.backgroundColor = "#ccc";
之前使用document.frames
。仅ifram.document.body.style.backgroundColor = "#ccc";
即可。
- firefox插件和dev/panel之间的通信
- 如何在两个不同的iframe HTML之间进行通信
- Angularjs事件与发布/订阅指令之间的通信
- Firefox插件SDK:在侧边栏和主脚本之间通信对象
- Ember.js:接受的子组件和父组件之间通信的最佳实践
- 如何在Windows Phone 8.1应用程序中在C#和Javascript之间传递数据或通信
- 如何在Famo.us中的两个视图(不同的js文件)之间进行通信
- 在Jquery或Javascript中获取两个范围或日期之间的通信周数
- 如何在同源选项卡之间建立通信
- 如何在 PHP 和 JS 中的并发会话之间进行通信
- 如何在两个动画画布元素之间进行通信
- 在 HTML5 和 C# Web 套接字通信之间
- angularjs 中控制器和指令之间的通信
- 歌剧扩展脚本和它们之间的通信
- 如何使用js在两个aspx页面之间进行通信
- 多个应用程序之间的通信
- Socket.IO:如何在同一服务器中的Socket.on()事件之间通信/交换数据
- chrome扩展的浏览器操作、后台脚本和内容脚本之间通信的上下文和方法
- 使用PhoneGap/Cordova时应用程序和服务器之间通信的最佳实践
- 使用AJAX在两个JavaScript文件之间通信并发送数据