Creé un tema personalizado (un subtema del tema base de Radix ).
Estoy cargando un archivo Javascript personalizado ( radix_sub.script.js
) usando el libraries.yaml
archivo del módulo como se muestra a continuación:
style:
version: VERSION
css:
theme:
assets/css/radix_sub.style.css: {}
js:
'//cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js': { type: external }
'//stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js': { type: external }
assets/js/radix_sub.script.js: {}
dependencies:
- core/drupal
- core/jquery
- core/jquery.once
- core/drupalSettings
En ese archivo, quiero registrar algunos eventos de JavaScript (Bootstrap modal).
(function ($, Drupal) {
Drupal.behaviors.portfolio = {
attach: function (context) {
console.log('CONTEXT', context);
$('#portfolioModal', context).once('bootstrap-modal-shown', console.log('*** REGISTER SHOWN.BS.MODAL')).each(function () {
$(this).on('shown.bs.modal', function () {
console.log('SHOWN BS MODAL EVENT TRIGGERED');
});
});
$('#portfolioModal', context).once('bootstrap-modal-hidden', console.log('*** REGISTER HIDDEN.BS.MODAL')).each(function () {
$(this).on('hidden.bs.modal', function () {
console.log('HIDDEN BS MODAL EVENT TRIGGERED');
});
});
}
}
}(jQuery, Drupal));
Funciona. Veo los registros SHOWN BS MODAL EVENT TRIGGERED y HIDDEN BS MODAL EVENT TRIGGERED cuando muestro / oculto el modal.
Primero, ¿lo estoy haciendo de la manera correcta?
Así es como se ve mi consola de desarrollador cuando cargo mi página.

Esto sucede solo cuando estoy conectado (como administrador). Cuando estoy anon, veo los registros de REGISTRO solo una vez, pero aquí mi código parece ejecutarse 11 veces.
¿Es este un comportamiento normal? ¿Y / o por qué está haciendo eso?