Как заставить iframe запускать функцию Javascript на главной странице при загрузке iframe? - PullRequest
0 голосов
/ 26 ноября 2011

У меня есть этот 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 голосов
/ 26 ноября 2011

Используйте родительское свойство IFrame, Как получить доступ к родительскому Iframe из javascript

0 голосов
/ 26 ноября 2011

Здесь вам нужно создать файл JSP с ответом и написать некоторый скрипт в JSP для доступа к методу uploadDone, который уже загружен в документ.

Скрипт в JSP может бытьчто-то вроде:

 parent.document.uploadDone(response);
0 голосов
/ 26 ноября 2011

Полагаю, вы просто добавили бы событие в элемент окна iFrame:

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

Также обратите внимание, что я обертываю uploadDone внутри функции; в противном случае он просто вызовет его и установит событие как возвращаемое.

...