Открыть диалог ajax с помощью JavaScript

Sep 18 2020

Добавив use-ajaxссылку, мы можем открыть модальное окно, используя библиотеку Drupal ajax согласно документации .

Например

<a class="use-ajax" 
    data-dialog-options="{&quot;width&quot;:400}" 
    data-dialog-type="modal" 
    href="/node/1">
    First article displayed in modal dialog.
</a>

Это будет использовать библиотеку ajax для выборки node / 1, а затем отобразить ее в модальном режиме.

Существует также Dialog API для JavaScript, который позволяет открывать модальные окна с помощью JavaScript.

Например

var myDialog  = Drupal.dialog(ADOMElement, settings);
myDialog.show();

Проблема с этим API в том, что вам нужно передать существующий элемент DOM.

Мой вопрос: могу ли я запустить открытие модального окна с помощью JavaScript и использовать внутреннюю библиотеку ajax Drupal для фактического извлечения содержимого?

Например, я могу сделать что-то подобное?

var myDialog  = Drupal.dialog('/node/1', {useAjax: true});
myDialog.show();

Я мог бы просто создать ссылку html в соответствии с моим первым блоком кода, скрыть ее с помощью css, а затем вызвать щелчок по ней с помощью JS, но это кажется немного взломанным - должен быть способ запустить это действие с использованием чистого JS.

Ответы

2 4k4 Sep 18 2020 at 16:48

Вы можете запускать Ajax в пользовательском javascript. Узнайте, как активировать существующий Ajax, не являющийся формой, из события JavaScript

В вашем случае диалог Ajax:

var ajaxSettings = {
  url: '/node/1',
  dialogType: 'modal',
  dialog: { width: 400 },
};
var myAjaxObject = Drupal.ajax(ajaxSettings);
myAjaxObject.execute();