#javascript #html #css #jquery-ui
#javascript #HTML #css #jquery-пользовательский интерфейс
Вопрос:
Я использую диалоговое окно пользовательского интерфейса jQuery для всплывающих окон, которые считываются с внешних страниц. Как мне заставить его загружать заголовок из внешнего HTML вместо того, чтобы каждый раз менять его в коде? Потому что я тоже хочу разные заголовки.
Пожалуйста, есть предложения?
function openDialog(url) {
$("<div class='popupDialog'>Loading...</div>")
.dialog({
autoOpen: true,
closeOnEscape: true,
width: '900',
height: '900',
modal: true,
title: 'Bonus Features',
beforeClose: function(){ $(this).remove(); }
}).bind('dialogclose', function() {
jdialog.dialog('destroy');
}).load(url, function() {
$(this).dialog("option", "position", ['center', 'center'] );
});
adjustJQueryDialogOverlay();
}
$(window).resize(function() {
$(".ui-dialog-content").dialog("option", "position", ['center', 'center']);
});
Комментарии:
1. Вам придется немного поиграть с ним, чтобы заставить его использовать заголовок загружаемой страницы, а не страницу, на которой вы находитесь. Вы загружаете реальные страницы или просто какой-то текст или xml?
2. Мне просто нужно, чтобы он читал с любой загружаемой страницы. Фактические страницы. К сожалению, я бы не знал, как с этим играть.
3. Вы можете загрузить страницу в диалоговое окно. . . затем проверьте длину $(‘title’). длина и посмотрите, равна ли она двум (одна для страницы «хост» и одна для страницы «диалог»). Если вы зашли так далеко, попробуйте определить, какой заголовок какой: получите заголовок страницы «хост» перед загрузкой дополнительной страницы в ежедневный журнал и сравните его с текстом заголовков, возвращаемых в вашем массиве jQuery.
Ответ №1:
Похоже, у вас есть два вопроса. Сначала самый простой. Как изменить заголовок?
Заголовок диалогового окна jQuery определяется параметром title. В вашем коде у вас есть:
title: 'Bonus Features'
Но если бы вы изменили сигнатуру своей функции, чтобы принять параметр title, вы могли бы передать заголовок функции и не беспокоиться о постоянном изменении вашего кода.
function openDialog(url, title) {
$("<div class='popupDialog'>Loading...</div>").dialog({
...
title: title,
...
);
}
Теперь о сложном: как вы получаете заголовок с вашей целевой страницы. Я не уверен, что для вас есть простой способ выполнить это, не запрашивая страницу через AJAX и анализируя результат как XML / текст. Вот ссылка, чтобы сделать это, если вам действительно интересно.
http://forum.jquery.com/topic/getting-title-tag-from-html-page-using-ajax
Но я действительно не хочу поощрять это. Я имею в виду, кажется немного чрезмерным просить клиентский скрипт делать все это. И вы не гарантированы, что это может работать от браузера к браузеру. Скорее было бы намного проще просто связать все, что вы используете для запуска своих диалогов, с заголовками страниц, жестко запрограммировав заголовки.
Комментарии:
1. Это звучит еще сложнее, от чего мне нужно избавиться. Я хочу, чтобы заголовок HTML был таким же, как у самого диалогового окна. Я думаю, это невозможно. Я действительно ценю ваше время и усилия в вашем ответе. Большое вам спасибо.
2. Нет проблем. И вы правы, это сложно, но не невозможно. Конечным результатом было бы то, что у вас была бы задержка, пока браузер загружал страницу для анализа заголовка перед отображением диалогового окна.
Ответ №2:
Поместите это в событие «открыть»:
$(this).parent().find('.ui-dialog-title').html('Printed Card Designer');