Диалоговое окно пользовательского интерфейса jQuery для загрузки заголовка HTML

#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');