2009-07-17 16 views
1

Ich benutze ExtJS Version 2. Ich bin auf eine Schaltfläche klicken, um neue Registerkarte zu einem TabPanel hinzuzufügen. Die neue Tab-Funktion sieht wie folgt aus:ExtJS Anzeige Link in neue Registerkarte

function addTab(tabTitle, targetUrl){ 
     tabPanel.add({ 
     title: tabTitle, 
     iconCls: 'tabs', 
     closable:true 
    }).show(); 
} 

Ich würde gerne wissen, ob es möglich ist, die targetUrl zu bekommen und es in neuen Tab angezeigt werden soll. Wenn ich einstelle, würde mein Tab-Inhalt offensichtlich nur ein Text mit meiner URL sein. Wenn ich die autoLoad: {url: targetUrl} einrichten funktioniert es, aber es liest die Datei Inhalte, als ob sie Texte oder Skripte waren. Das Problem ist, dass ich Bilder öffnen müsste und ich bekomme nur ihre Quelle mit autoLoad, nicht die eigentliche Anzeige des Bildes . Ich möchte nur, dass mein neuer Tab wie ein neues Popup-Fenster mit einem Standardlink wirkt.

Kann jemand helfen?

Danke.

Antwort

0

Nevermind, ich habe die ManagedIframe Skript Hexe verwendet geschieht genau das zu tun, was ich gebeten hatte. Danke trotzdem.

+0

Ja, das Skript tut im Grunde, was ich empfehle. Ich war mir einfach nicht sicher, ob du das suchst oder nicht. – Josh

0

Wenn es sich bei der URL um einen HTML-Snippit und nicht um eine ganze Seite handelt, müssen Sie einen AJAX-Aufruf durchführen, um den Inhalt abzurufen und die Registerkarte zu aktualisieren. Wenn die Seite eine ganze Seite, einschließlich <html> und <body> Tags, dann sollten Sie die Registerkarte ein iFrame machen enthalten mit "src=\""+url+"\""

+0

Ich dachte an einen iFrame, aber wie kann ich seine Breite und Höhe auf der Grundlage meiner Mittelfeldgröße festlegen? –

+0

Probieren Sie width = "100%" height = "100%" - wenn das nicht funktioniert, fügen Sie dem Panel, das die Größe des iFrames verändert, einen onresize-Handler hinzu. – Josh

2

In ExtJS Sie jede Platte mit dem Inhalt einer URL laden. Sie können es so machen

var panel = new Ext.Panel({ 
    title: 'Your Tile', 
    closable: true, 
    iconCls: 'tabs', 
    autoLoad: { 
     url: targetUrl 
    } 
}); 
tabPanel.add(panel); 
tabPanel.doLayout(); 
tabPanel.setActiveTab(panel); 

Weitere Informationen finden Sie in der Extjs-API-Dokumentation.

+0

Bitte führen Sie den Code, den Sie gepostet haben, aus und sagen Sie mir, ob Sie ein Bild mit seinem Pfad als targetUrl anzeigen können. Weil ich nicht kann. Ich bekomme Zeichen wie folgt: " I + Lj % xjE9", weil Sie nicht einfach ein Bild über GET oder POST senden können. –

+1

Richtig. Die URL muss ein Image-Tag zurückgeben. Wenn es ein Bild zurückgibt, benötigen Sie einen onLoad-Handler, der den Inhalt auf "" – Josh

0

Warum möchten Sie das Bild durch die Antwort gesendet, können Sie einfach die URL des Bildes als HTML des Panels angeben.

var panel = new Ext.Panel({ 
    title: 'Your Tile', 
    closable: true, 
    iconCls: 'tabs', 
    url:'<img src="http://yourdomain.com/images/image.gif" />' 
}); 
+0

aktualisiert. Weil es nicht nur Bilder sind, die ich senden muss. Ich muss PDF-Dateien, HTML-Dateien, jede Art senden. –

Verwandte Themen