2009-07-17 2 views
1

Я использую версию ExtJS 2. Я нажимаю кнопку, чтобы добавить новую вкладку в TabPanel. Новая функция вкладка выглядит следующим образом:Экранная ссылка ExtJS в новой вкладке

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

Я хотел бы знать, если это возможно, чтобы получить targetUrl и отобразить его в новой вкладке. Если я установил html: targetUrl, то содержимое моей вкладки, очевидно, было бы просто текстом с моим URL. Если я настроил autoLoad: {url: targetUrl}, он работает, но он читает содержимое файла, как если бы это были тексты или скрипты. Проблема в том, что мне нужно будет открывать изображения, и я просто получаю их источник с autoLoad, а не фактическое отображение изображения , Я просто хочу, чтобы моя новая вкладка действовала как новое всплывающее окно со ссылкой по умолчанию.

Может ли кто-нибудь помочь?

Спасибо.

ответ

0

Nevermind, я использовал ведьма ManagedIframe сценарий случается делать именно то, что я просил. Спасибо, в любом случае.

+0

Да, этот сценарий в основном делает то, что я рекомендовал. Я просто не был уверен, что это то, что вы искали или нет. – Josh

0

Если URL-адрес является фрагментом HTML, а не полной страницей, вам необходимо сделать вызов AJAX для извлечения содержимого и обновления вкладки. Если страница является полной страницы, в том числе и <html><body> тегов, то вы должны сделать вкладку содержать IFrame с "src=\""+url+"\""

+0

Я думал о iframe, но как я могу установить его ширину и высоту в зависимости от размера центральной панели? –

+0

Попробуйте width = "100%" height = "100%" - если это не работает, добавьте обработчик onresize на панель, которая изменяет размер iFrame. – Josh

2

В ExtJS вы можете загрузить любую панель с содержимым URL. Вы можете сделать это следующим образом:

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

Более подробную информацию вы найдете в документации по интерфейсу Extjs.

+0

Пожалуйста, выполните код, который вы опубликовали, и скажите мне, можете ли вы отобразить изображение с его контуром как targetUrl. Потому что я не могу. Я получаю такие символы: « I + Lj % xjE9», потому что вы не можете просто отправить изображение через GET или POST. –

+1

Вправо. URL должен возвращать тег изображения. Если он возвращает изображение, у вас должен быть обработчик onLoad, который обновляет содержимое «» – Josh

0

Почему вы хотите отправить изображение через ответ, вы можете просто указать URL-адрес изображения как html панели.

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

Потому что это не только изображения, которые я должен отправить. Я должен отправлять файлы PDF, html-файлы, любые типы. –

Смежные вопросы