Javascript вызов, чтобы закрыть окно - PullRequest
1 голос
/ 17 декабря 2010

Это беспокоило меня последние несколько часов.

Я использую iframe-версию LightFace модальных окон:

http://davidwalsh.name/facebook-lightbox

Проблема, с которой я столкнулся, заключается в том, что я не могу закрыть модал внутри самого iframe (того же домена)

Теперь я понимаю, что по многим часам исследования Google это возможно с такими звонками, как:

<a href="#" onclick="parent.$.nyroModalRemove(); return false;">Close Iframe</a>

parent.$.nyroModalRemove();

window.parent.$.prettyPhoto.close(); 

Однако я не могу найти фактический вызов, по-разному необходимый в лайтбоксе, например, blabla.close (); Я пробовал Firebug и JavaScript-отладчик, но безрезультатно.

Здесь можно увидеть пример работающей нижней кнопки (он расположен на самом модальном поле) http://davidwalsh.name/dw-content/lightface.php click = "WalshFrame (LightFace.IFrame)"

Есть идеи?

Ответы [ 4 ]

2 голосов
/ 17 декабря 2010

У меня работает с

parent.Ilight.close();

См. Звонок:

document.id('iframe').addEvent('click',function() {
    Ilight = new LightFace.IFrame({ height:400, width:900, url: 'http://davidwalsh.name', title: 'David Walsh Blog!' }).addButton('Close', function() { this.close(); },'blue').open();
   });

"iframe" - это идентификатор ссылки WalshFrame (LightFace.IFrame).

Итак, переменная, которую вы ищете, определена там -> Ilight

1 голос
/ 28 июля 2011

На странице 1:

<script type="text/javascript">  
<!-- destroy lightface   
function getElementsByClass(node,searchClass,tag) {   
var classElements = new Array();  
var els = node.getElementsByTagName(tag); // use "*" for all elements  
var elsLen = els.length;  
var pattern = new RegExp("\\b"+searchClass+"\\b");  
for (i = 0, j = 0; i < elsLen; i++) {  
 if ( pattern.test(els[i].className) ) {  
 classElements[j] = els[i];    
 j++;  
}  
}  
return classElements;  
}  
function closetest() {  
var el = getElementsByClass(document,'lightface','*');  
// alert(el.length);  
for (I=0;I<el.length; I++) { el[I].parentNode.removeChild(el[I]); }  
}  
//-->  
</script>

В iframe:

    <? echo"<br><a href=\"javascript:void(0)\" onclick=\"javascript:window.parent.telecharge('http://www.site.com/thumbnail/thimg/".$_FILE  S[userfile][name]."'); window.parent.closetest(); \">Pour publier cette image sur votre fil de messagerie, cliquez ici.</a>"; ?>

window.parent.closetest(); // 
1 голос
/ 17 декабря 2010

Я делаю нечто подобное с SimpleModal Эрика Мартина . Проблема, с которой я столкнулся, заключается в том, что $.modal.close() ($.nyroModalRemove()) не является глобальной функцией. Моим решением было создать глобальную функцию на родительской странице и вызвать ее из IFRAME.

Родительская страница

<script type="text/javascript">
    function closeModal() {
        $.nyroModalRemove();
    }
</script>

Страница IFRAME

<a href="#" onclick="parent.closeModal(); return false;">Close Iframe</a>
0 голосов
/ 17 декабря 2010

Я не понимаю, почему вы хотите иметь кнопку закрытия внутри iframe.Если вы посмотрите ближе на пример на странице Дэвида Уолша, кнопка закрытия является частью модального, , а не внутри iframe.Поэтому я думаю, что лучшим решением было бы иметь внешнюю рамку вокруг фрейма, в которую нужно поместить кнопку закрытия (как в примере Уолша).С этим решением также легче загружать страницы в iframe, где вы сами не можете разместить кнопку закрытия.

...