2012-05-02 1 views
0

Похоже, что это было бы довольно распространенное использование для простой модели, но я не могу найти, как это сделать в любом месте.Как вернуть переменную в SimpleModal после ее закрытия

Я подтягиваю страницу через iframe, используя simplemodal, генерируя переменную, тогда я хотел бы передать ее на родительскую страницу, когда модальная функция закрыта.

Как бы я это сделал?

Спасибо за помощь!

ответ

1

Как вы относитесь к его возврату? JQuery? Если вы не находитесь в том же домене, протоколе или иным образом правильно настроили document.domain, вы столкнетесь с ошибками со следующим фрагментом, но вы можете попробовать что-то вроде следующего для доступа к DOM родительской страницы.

window.parent.$ 

Так скажем, у вас есть эта функция на родительской странице

function UpdateTheHeaderPlease(data) { 
$('.header').replaceWith(data); 

}

тогда вы этот код, завернутый в SimpleModal обратного вызова OnClose:

$("#element-id").modal({onClose: function (dialog) { 
window.parent.UpdateTheHeaderPlease(some data); 

});

+0

Я имею в виду, что после того, как я закрыл modal с iframe, как я могу использовать эту переменную на главной странице ?. Так что, не закрывая modal, сделайте window.parent.whatever не useable beacause iframe больше не существует? Кроме того, это все в одном домене, протоколе и т. Д., Поэтому там не должно быть проблем. – RandyLahey

+0

, поэтому я думал, что вы обновляете родителя в обратном вызове OnClose через javascript. Так технически до того, как iframe был закрыт, но, возможно, это сработало бы? –

0

Хорошо, я понял, спасибо Роба за хорошие идеи.

Мне нужно было сначала дать iframe имя.

$.modal('<iframe src="modal_calls.cfm" name="frameName">', { 

Тогда в пределах страницы IFrame я установить переменную я хотел передается обратно к окну контекстными переменной:

window.frameVar = myVar; 

Тогда, прежде чем я закрыл модальный я установил окно область видимости переменной, используя имя из плавающий фрейм:

onClose: function (dialog) { 
    window.newFrameVar= window.frameName.frameVar; 
    $.modal.close(); 
} 

Тогда я смог получить к нему доступ на родительский документе с помощью window.newFrameVar.

+0

Кстати, я думаю, что это вообще хорошая идея, чтобы избежать iframes. Если вы управляете обоими URL-адресами, вам может понадобиться изучить div, который заполняется ajax или что-то –