发布到iframe目标:无法从iframe获得响应
Post to iframe target: cannot get response from iframe
我有一个小书签。点击时(在任何页面上):
- 它从mypage.com插入一个带有src的脚本元素。这个src是下载的
- 然后src:
- 插入iframe(DOM)
- 插入表单(DOM)。表单以iframe为目标
- 将数据添加到表单并提交到mypage.com
- mypage.com发回响应:
<div id = "msg">Message back</div>
- 这个响应div被插入到iframe中。(在Chrome元素选项卡中验证)
- 现在我想提醒返回的消息"返回消息"。它不起作用
创建iframe时,我设置了它的onload
事件:
var i = document.createElement('iframe');
i.setAttribute('id', 'frame-id');
i.setAttribute('onload', 'iframeFormSubmitted();');
然后我有了功能:
function iframeFormSubmitted(){
// in try-catch, alerting error
var iframe = document.getElementById("frame-id");
var iframeDocument = iframe.contentDocument || iframe.contentWindow.document;
var msg = iframeDocument.getElementById("msg").innerHTML;
alert(msg);
}
这最终被调用了两次(我想是第一次,因为我也将表单写入iframe)。错误为:
cannot read property innerHTMl of null
cannot call method getElementById of undefined
编辑:contentDocument未定义。我认为这是一个跨域的问题:一个有内容的iFrame怎么可能有一个未定义的contentDocument对象?
在父文档(iframe
所在的文档)中创建一个function
,例如,父文档中的函数done
,如下所示
function done(message)
{
// do whatever you want to do with message
alert(message);
}
从服务器(mypage.com)向iframe
发送以下代码作为响应
// Call the "done" function from the iframe (the last line on the server)
echo "<script type='text/javascript'>parent.done('This is my message')</script>";
它会起作用的,我已经在我的一个项目中应用了这个该死的东西,并且工作完美。
下面给出了我的工作计划中的一些HTML
片段
<form action="someAction" method="post" id="imageform" name="imageform" target="img_submit" enctype="multipart/form-data">
<input style="display:none" type="file" name="imgfile" id="imgfile" />
<input style="display:none" type="submit" name="subimg" value="Submit" />
</form>
这是隐藏的iframe
<iframe style="display:none" id="img_submit" name="img_submit"></iframe>`
这是我在parent
文档中的done
函数(与iframe
所在的文件相同)
function done(lnk)
{
// this is being used for afile upload (ajax simulation/fake)
loading('hide');
document.imageform.reset();
}
相关文章:
- 一旦接收到iFrame的响应,就捕获该响应
- 嵌入 iframe 不会返回响应式设计
- 如何使 iframe 中的内容响应式
- 如何在跨域中创建响应式iframe
- 如何访问 iframe.contentDocument 以在跨源请求后获得响应
- 异步表单w/Iframe Target——OnLoad适用于FF、Chrome、IE9,不适用于;无法在IE7中得到响应
- dojo/request/iframe中读取xml响应的缺陷
- Youtube iframe没有响应通过上图传递的指针事件的点击:none
- iframe响应为302时重新加载应用程序
- 如何记录Apache Cordova应用程序中加载的iframe的http响应
- 显示微调器,直到 iframe 加载 http post 响应
- 检测 iframe 网页是否响应
- 在 Iframe 中发布服务器响应
- 如何使用 Javascript 从 iFrame 响应中设置隐藏字段值
- 如何使用响应式iframes使iframe响应.js
- 如何获取提交表单的 Iframe 的响应
- 如何直接从响应中将 html 和 css 渲染到 iframe 中
- 如何获得iframe响应头
- 使iFrame响应其内容的高度(PHPBB)
- 如何使一个表与Iframe响应