У меня есть div, который я добавляю к странице динамически при щелчке ссылки, а затем записываю iframe в этот div.jQuery UI dialog - динамическая ошибка последовательности функций
// open login popin
function loginLayer(){
$(".ui-dialog-content").dialog("destroy");
callIframe();
openLoginDialog();
}
// write dialog div & iframe + src to DOM
function callIframe() {
var iframeURL = "" + loginConfig.iframeSource + "?displayType=" + loginConfig.displayType +"&isSignature=" + loginConfig.isSignature + ""
$('body').append('<div id="loginDialog"></div>');
$('#loginDialog').append('<IFRAME id="loginLayer" name="loginLayer" src="' + iframeURL + '" scrolling="no" width="100%" marginheight="0" marginwidth="0" frameborder="0"></div>');
}
// open login dialog
function openLoginDialog(){ //open }
после callIframe
работает, открывается диалоговое окно.
Что происходит, так это то, что диалог открывается с iframe, без проблем - но в нижней части body
(firefox и IE) находится большое количество пробелов, размер которых равен размеру #loginDialog
.
Я не уверен в причине, поскольку все выглядит по порядку - но кажется, что, когда div добавляется к телу, это его рендеринг - увеличение высоты тела, а затем открытие в диалоговом окне.
Редактировать
Представляется, что это вопрос времени - если я пошагово каждое действие с помощью контрольных точек, то проблема будет решена - так что-то запуск слишком рано ...
Если я сделаю это, он работает - так что-то в callIframe ?:
callIframe();
alert('works when interrupted by alert');
openLoginDialog();
то нет проблем. Таким образом, это означает, что
Работая над ней :-) –
Можете ли вы попробовать [эту скрипку] (http://jsfiddle.net/heera/7TtrN/2/). –