当iframe加载时,如何让iframe在主页面上运行Javascript函数?

时间:2011-11-26 05:23:42

标签: javascript jquery html ajax ajax-upload

我有这个HTML:

<script type="text/javascript">
                        function uploadDone(response) {
                                alert(response);
                            }
                            function init() {
                                        document.getElementById('file_upload_form').onsubmit=function() {
                                            document.getElementById('file_upload_form').target = 'upload_target'; //'upload_target' is the name of the iframe
                                            document.getElementById("upload_target").onload = uploadDone(response);
                                        }
                                    }
                        </script>
                        <form method="get" id="file_upload_form" enctype="multipart/form-data" action="../includes/parsecsv.ajax.php" target="upload_target">
                            <label class="uploadClick">
                                <button class="normal">Click to Upload Sign Ups CSV</button>
                                <input type="file" id="uploadSignups file" name="file">
                            </label>
                            <span class="uploadDrag"><span>or</span>Drag Your Sign Ups CSV Here</span>
                            <button type="submit" name="action">hello</button>
                            <iframe id="upload_target" name="upload_target" src="" style="width:0px; height:0px; border:none;"></iframe>
                        </form>

当您单击提交按钮时,应该通过<iframe>以文件方式上传文件输入中的所选文件。我似乎已经能够进行上传,但上传完成时似乎没有运行uploadDone()?有什么想法吗?

3 个答案:

答案 0 :(得分:0)

我想你只需要在iFrame的窗口元素中添加一个事件:

document.getElementById("upload_target").contentWindow.onload = function(response) { uploadDone(response) };

另外,请注意我将uploadDone包裹在一个函数中;否则,它只会调用它并将事件设置为它返回的任何内容。

答案 1 :(得分:0)

答案 2 :(得分:0)

在这里,您需要创建一个具有响应和的JSP文件 在JSP中编写一些脚本来访问已加载到文档中的uploadDone方法。

JSP中的脚本可以是:

 parent.document.uploadDone(response);