Skip to content

open_tab

do- edited this page May 1, 2019 · 1 revision
 open_tab (url, name)

открывает новую вкладку браузера для заданного url и с заданным внутренним именем name (в смысле window.name).

По умолчанию name=url — и это удобно использовать для того, чтобы каждый объект системы показывался в своём окне.

Например, вызов

 open_tab ('/users/123')

имеет следующий эффект:

  • если в текущий момент имя ни одного окна браузера не совпадает с '/users/123' — откроется новая вкладка с таким URL и таким же именем;
  • если же такое окно существует (в результате предшествующего вызова open_tab, явного изменения window.name или иных событий) — то URL /users/123 будет загружен в него. Для пользователя это выглядит как обновление вкладки.
При применении этой функции следует иметь в виду, что её действие может быть подавлено popup blocker'ом. А может — и не быть. Единственный способ избежать этой неприятности — вызывать open_tab в рамках непосредственной обработки onClick, без дополнительных эпизодов асинхронного ожидания: в частности, AJAX.

Типичный проблемный сценарий таков:

  • пользователь нажимает "Добавить";
  • клиент вызывает query
  • и внутри передаваемого ему callback, получив id нового документа, пытается соответствующую страницу посредством open_tab.
Вот такая попытка может быть подавлена popup blocker'ом. А если open_tab вызывается прямо на onClick — это не вызовет подозрений. Соответственно, чтобы открыть окно, надо предварительно показать пользователю какой-то DIV к кнопкой, ссылкой и т. п.

Один из вариантов — совместить это с переспросом: "Открыть страницу?" — используя вместо штатного confirm какой-либо его аналог, реализованный через DOM. В самом elu.js такого нет. Но отлично подходит, например, подходит w2confirm из библиотеки w2ui.

Clone this wiki locally