2015-11-17 15 views
6

Ho creato le schede Jquery e incorporato una pagina JSP nella pagina padre. Ho richiamato gli eventi di ridimensionamento delle finestre su entrambe le pagine. Ma la funzione della pagina interna non viene invocata.Evento di ridimensionamento della finestra di evento sul tag dell'oggetto

Per la pagina interna ho un elemento SVG che deve essere ridimensionato ogni volta che la finestra viene ridimensionata.

sLinkPageToJunction = '<%=base1%>' + "/InnerTabbedPage.jsp?IntersectionName=" + strIntersectionName + "&FrameName=" + strFrameName + "&ip=" + '<%=ServerIP %>' + "&port=" + '<%=ServerPORT %>' + "&InterCorridorName=" + svgfilename; 
if (document.getElementById("JnLive" + strIntersectionName) == null) { 
    //var nextTab = $('#tabs li').size()+1; 
    Tabcount = $('#tabs li').size(); 
    // create the tab 
    $('<li><a href="#tab' + strIntersectionName + '" data-toggle="tab">' + strIntersectionName + '&nbsp;&nbsp; <button class="close closeTab" align="right" "type="button">x</button></a></li>').appendTo('#tabs'); 

    // create the tab content 

    $('<div class="tab-pane" id="tab' + strIntersectionName + '"> <div id="JnLive' + strIntersectionName + '" class="col-sm-6" style="margin-top: 1%"> </div>').appendTo('.tab-content'); 


    var heightvalue = $(window).height(); 
    var widthvalue = $(window).width() 

    //alert("---->"+heightvalue+"---->"+widthvalue); 

    var url = "<object id=obj'" + strIntersectionName + "' data='" + sLinkPageToJunction + "' height='" + heightvalue + "' width='" + widthvalue + "'></object>"; 

    $("#JnLive" + strIntersectionName).html(url); 

    // make the new tab active 
    $('#tabs a:last').tab('show'); 
    OpenedTabbedJunctionNames[Tabcount - 1] = strIntersectionName; 
    OpenedTabbedJunctionFrameNames[Tabcount - 1] = strFrameName; 

    registerCloseEvent(); 
} 

Quindi crea una nuova scheda se non esiste già.

Ora la mia su WindowResize evento sulla pagina interna è

window.addEventListener('resize', changeframesizeJN) ; 

sulla pagina esterna è

window.addEventListener('resize', changeframesize) ; 

Ma quando ho ridimensionare la finestra con la scheda selezionata changeframesizeJN non viene richiamato.

Come posso farlo?

P.S: Non so se ho inserito le informazioni richieste per la domanda. Il fatto è che non sono sicuro di come fare questa domanda.

+0

aggiungere un http://jsfiddle.net/ a riprodurre se è possibile (o un frammento di codice) – Blag

+0

Se il documento all'interno del ' L'elemento 'si trova sullo stesso dominio, è possibile accedere al suo documentoElement dalla finestra padre con' object.contentDocument' che consente di procedere direttamente alle modifiche che si desidera eseguire. – Kaiido

+0

@Blag, non ero in grado di riprodurre un jsfiddle. L'avrei sicuramente fatto se potessi. Questo è uno dei motivi per il PS. – Tattu

risposta

1

Dai al tuo pannello una larghezza e un'altezza fisse da quello che posso dire dal tuo codice. Dovresti cambiare il CSS della tua pagina interna per ridimensionarlo con il suo genitore.

In alternativa, è possibile chiamare la funzione della pagina interna sul ridimensionamento del relativo genitore esterno come anche il proprio. Fin dalla sua sullo stesso dominio che non avrete alcun problema a fare questo:

window.addEventListener('resize', function() { 
    changeframesize(); 
    window.frames['yourIframeName'].changeframesizeJN(); 
}); 

Basta fare in modo di dare il vostro finestra interna un nome così è possibile selezionarlo. O usarlo di indice, ma mi consiglia di utilizzare un nome per mantenerlo leggibile:

window.frames[0].changeframesizeJN(); 
+0

Grazie amico, questo è esattamente quello che volevo. Sto usando l'indice dei frame, anche se a causa di altri vincoli. Anche se non stavo dando alcuna larghezza al pannello. Il suo pannello di bootstrap. Quindi il pannello era reattivo. L'unica cosa era che il tag SVG era nella pagina interna. Quindi document.get non me lo dava così da poter ridimensionare l'SVG. – Tattu

0

Prova ad aggiungere il ridimensionamento sul tag object, come:

var url = "<object id=obj'" + strIntersectionName + "' onresize='changeframesizeJN()' data='" + sLinkPageToJunction + "' height='" + heightvalue + "' width='" + widthvalue + "'></object>"; 

Se funziona, allora è possibile associare all'oggetto, lo stesso che la vostra finestra, se non con l'elemento oggetto invece.

objectElement.addEventListener('resize', changeframesizeJN) ; 
+0

Grazie, ma l'oggetto onresize non ha funzionato. window.frames ha fatto il trucco per me. – Tattu

Problemi correlati