2012-04-03 9 views
0

Ich habe Fullcalendar in iframe öffnen. Ich habe ein Skript von dyn-web.com auf Elternseite, die Iframe ändert die Größe und das funktioniert gut die meiste Zeit:Dynamische Skalierung iframe in FullCalendar

function setIframeHeight(id) { 
    var ifrm = document.getElementById(id); 
    var doc = ifrm.contentDocument ? ifrm.contentDocument : ifrm.contentWindow.document; 
    ifrm.style.visibility = 'hidden'; 
    ifrm.style.height = "10px"; 
    ifrm.style.height = getDocHeight(doc) + 5+"px"; 
    ifrm.style.visibility = 'visible'; 
} 

Wenn ich den Kalender zu öffnen zunächst Verändern der Größe in Ordnung, aber wenn ich einen anderen Monat auswählen, das hat Bei einer längeren Seite wird die Größe nicht geändert.

Wie kann ich die Größe ändern auf das übergeordnete Fenster aufrufen?

Dies ist der Anfang meines Kalenders, aber ich kann nicht herausfinden, die Syntax zum dynamischen Aufruf der Größenänderung. Ich habe mit dem Höhenparameter gespielt, aber es muss dynamisch sein:

$('#calendar').fullCalendar({ 
    month: <%=monthStart%>, 
    year: <%=yearStart%>, 
    eventSources: 
    [ 
     { url: <%=esource%>, 
      type: 'GET', 
      error: function() { 
       alert('there was an error while fetching events!'); 
      } 
      }, 

Antwort

0

Sie brauchen so etwas wie dies zu tun:

$('#calendar').fullCalendar({ 
    month: <%=monthStart%>, 
    year: <%=yearStart%>, 
    eventSources: 
    [ 
    { url: <%=esource%>, 
     type: 'GET', 
     error: function() { 
     alert('there was an error while fetching events! '); 
     }  
    }, 
    viewDisplay: function(view) { 
     parent.setIframeHeight(iframeId) ; 
    }, 

Der viewDisplay Handler wird jedes Mal, wenn der Monat/Woche/Tag genannt Ansicht ist geändert. Sie können den windowResize-Handler auch verwenden, um ein Ereignis zu erfassen, das ausgelöst wird, nachdem die Größenänderung tatsächlich stattgefunden hat.