iframe submit получить опубликованный контент - PullRequest
0 голосов
/ 16 декабря 2011

С помощью iframe для отправки отправления в него загружается файл. все работает нормально до возвращенного содержимого.

Если я показываю iframe на странице, я вижу HTML, который был возвращен из функции в моем iframe. Возникли большие проблемы с получением содержимого iframe для замены содержимого страницы.

В основном получают содержимое iframe тела и помещают его в теги body страницы. Я уверен, что это одна или две строки, но каждая найденная в Интернете идея jquery, документа или getElementById не работает.

Я замечаю что-то странное, если я пытаюсь использовать "console.info ('somemessage')" в моей функции перезагрузки, он выдает ошибку, говоря, что консоль не существует. Не уверен, почему, но, кажется, мой фокус на javascript находится в iframe и он не видит firebug.

Вот код, урезанный. Вернемся к попытке .load событие, которое работает. но это вторая строка, которая пытается записать содержимое в тело. когда я это комментирую, показывается iframe с моим контентом. Если я запускаю его без комментариев, вся страница перезагружается.

        if (isStarted == false) {
            isStarted = true;
            statustracker.start();
            //style="height:0px;width:0px;"
            var iframe = $('<iframe name="postframe" id="postframe"  class="hidden" />');
            $('div#iframe').append(iframe);

            $('#ImportDetailForm').attr("target", "postframe")
            form.submit();

            $("#postframe").load(function () {
                iframeContents = $("iframe")[0].contentDocument.body.innerHTML;
                $("body").html(iframeContents); // <--- the problem
            });
        }

Ответы [ 2 ]

0 голосов
/ 16 декабря 2011

Указана неверная или недопустимая строка "code:" 12

вероятно, потому что iframeContents пуст.

            $("#postframe").load(function () {
                var win = document.getElementById("postframe").contentWindow;
                var parent_url = decodeURIComponent(document.location.hash.replace(/^#/, '')), link;
                iframeContents = $("#postframe").find("body").contents().serialize(); //$("iframe")[0].contentDocument.body.innerHTML;
                console.info(iframeContents);
                //$(this).parent("body").html(iframeContents);
                win.postMessage(iframeContents, parent_url, parent);
            });
0 голосов
/ 16 декабря 2011

На вашей родительской странице (той, которая содержит iframe) вы можете установить прослушиватель событий для события 'message', например так:

window.addEventListener("message", receiveMessage, false);
function receiveMessage(e) { ... }

Затем в своем iframe просто отправьте сообщение на«родительское» окно выглядит так:

parent.postMessage(someString, parentUrl);

Поскольку сообщения являются строками, вам нужно будет сериализовать любые данные, которые вы отправляете между iframe и родительским окном - я предлагаю JSON!Так что в вашем случае сериализуйте возвращаемый HTML из запроса на загрузку и отправьте его родителю, затем десериализуйте его на этой стороне и вставьте в DOM.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...