Как лучше всего написать всплывающее окно, соответствующее стандартам, с помощью XHTML и Javascript?

Я пишу совместимый со стандартами XHTML Strict 1.0, поэтому включение атрибута «target» HTML в элементы привязки не годится.

Я прочитал 2 принципиально разных способа использования Javascript:

  1. После загрузки документа найдите все ссылки с rel='external' и добавьте атрибут target='_blank'.

  2. Используйте атрибут HTML onClick, который запускает функцию Javascript popup(this), которая открывает окна с помощью window.open().

Этим методам уже 5-6 лет, так что я надеюсь, что с тех пор ситуация укрепилась. Как лучше всего это сделать?


person Pup    schedule 30.06.2009    source источник
comment
target = _blank, насколько мне известно, не рекомендуется использовать в течение некоторого времени. Вам следует избегать его использования.   -  person Evan    schedule 01.07.2009


Ответы (3)


С JQuery и Iframes (или вместо него объект)

person MiffTheFox    schedule 30.06.2009
comment
Почему ответ jQuery является принятым? Вопрос конкретно касается стандартов, совместимых ... с XHTML и Javascript. - person HNL; 25.07.2014

Нового способа сделать это нет, так что то, что вы уже нашли, есть то, что есть.

Первый метод - это обман. Вы используете Javascript для размещения нестандартной разметки на странице после ее загрузки, чтобы первоначально загруженная разметка была действительной. После запуска скрипта код больше не действителен.

Второй способ кажется лучше и с другой точки зрения. Ссылки будут работать, как задумано, сразу после загрузки страницы, по сравнению с первым методом, который не изменяет ссылки до тех пор, пока не загрузится весь контент на странице. Если пользователь быстро нажимает ссылку до того, как последнее изображение было загружено, вы все равно хотите, чтобы оно перешло в новое окно.

person Guffa    schedule 30.06.2009

Полноразмерные всплывающие окна часто блокируются современными браузерами.

Если вам нужен красивый кроссплатформенный способ создания красивых легких «всплывающих» окон (на самом деле они имеют общее родительское окно), возможно, используйте библиотеку виджетов JavaScript, такую ​​как ExtJs.

Вот как я создаю всплывающие окна «Справка» в моем приложении JavaScript.

// Loads help for just one window, i.e. non-tabbed.
function helpShow (help_filename, help_title) {
    if (! help_filename) { return; }

    var help_url = '/edit/help/' + help_filename + '.html';
    if (help_window == null) {
        help_window = new Ext.Window ({
            title: help_title,
            autoLoad: help_url,
            autoScroll: true,
            closeAction: 'hide',
            width: 460,
            height: 600,
            items: new Ext.Panel ()
        });
    }
    help_window.setVisible (true);
}

Некоторые CCS тоже делают их красивее.

person the.jxc    schedule 30.06.2009