JQUERY: динамическая загрузка и обновление содержимого iframe при изменении () / keyup () - PullRequest
1 голос
/ 01 декабря 2010

Я работаю над пользовательской CMS в drupal уже около двух или трех недель, и я продолжаю сталкиваться с этой же проблемой.Я пытаюсь загрузить динамически сгенерированный URL (извлекая идентификатор узла целевой страницы drupal в $ resultCut и добавляя его в baseurl сайта).Этот iframe встроен рядом с экземпляром CKEditor, и идея состоит в том, чтобы содержимое iframe изменялось при изменении полей в CKEditor.У меня есть следующий Jquery:

<script type="text/javascript">     
$(document).ready(function(){          
    baseurl = urlhere;
    url = baseurl+"<?php echo $resultCut ?>"
    $('#EmuFrame').attr('src', url); 
    var HTML = $('#EmuFrame').contents().find('body').html();
    alert ( "LOADING COMPLETE" + HTML );
});
$('#edit-field-mobile-page-header-label-0-value').change(function () { // writes changes to the header text to emulaor
    var curr = $(this).val();
    $('#EmuFrame').contents().find("h1").text(curr);
});
$('#edit-body').keyup(function(e)  { // writes changes to the body text to emulator
    var curr = $(this).val();
currhead = $('#EmuFrame').contents().find("h1").html();
$('#EmuFrame').contents().find('#content').html("<h1>"+currhead+"</h1>"+curr);
});

, где #EmuFrame - это идентификатор iframe, а теги # edit- * - это идентификаторы полей в CKEditor, которые я отслеживаюменять.Когда пользователь печатает, события keyup () или change () должны захватить новый html и заменить его html в iframe.

На данный момент предупреждение ЗАГРУЗКА ЗАВЕРШАЕТСЯ, но в предупреждении нет html.Я заметил, что содержимое iframe загружается ПОСЛЕ срабатывания оповещения, однако это заставило меня поверить, что это проблема с порядком, в котором запускаются события.

Кроме того, у меня было предупреждение вфункция обратного вызова keyup, которая возвращает новый html [alert (curr)], сгенерированный, когда пользователь начал печатать, и это предупреждение возвращает html (хотя оно извлекается из CKEditor).Тем не менее, iframe не отражает никаких изменений.Однако, если я добавлю [alert (currhead)], то вообще ничего не будет предупреждено.

Интересно отметить, что исходный URL технически находится в другом домене, чем родительский.Тем не менее, я использовал обходной путь (я уверен, что он работает, потому что ранее я заставил работать всю замену html, а потом каким-то образом это сломалось).Кроме того, ни Firebug, ни консоль Chrome не сообщают об ошибках XMLHttpRequest.Кроме того, я продолжаю получать эту ошибку: «Uncaught Syntax error, нераспознанное выражение: [@disabled]», и я не уверен, что это означает, и имеет ли это отношение к моей проблеме, как указано выше.

Это былонелепо длинная просьба о помощи, так что СПАСИБО ЗА ЧИТАТЬ, и спасибо за любую помощь !!

1 Ответ

0 голосов
/ 01 декабря 2010

Ваше замечание о междоменном iframe src вызывает беспокойство - вы не должны иметь доступ к его содержимому с помощью javascript. Тем не менее:

У вас есть две строки подряд:

$('#EmuFrame').attr('src', url); 
var HTML = $('#EmuFrame').contents().find('body').html();

Попробуйте дождаться первой загрузки iframe:

$('#EmuFrame').load(function() {
    var HTML = $('#EmuFrame').contents().find('body').html();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...