diff --git a/resources/js/ext.uls.interface.js b/resources/js/ext.uls.interface.js index 5b923253..3cc71849 100644 --- a/resources/js/ext.uls.interface.js +++ b/resources/js/ext.uls.interface.js @@ -442,6 +442,11 @@ var $target = $( ev.currentTarget ); ev.preventDefault(); + // Avoid reinitializing ULS multiple times for an element + if ( $target.attr( 'data-uls-loaded' ) ) { + return; + } + mw.loader.using( 'ext.uls.mediawiki' ).then( function () { var parent, languageNodes, standalone, uls; @@ -449,6 +454,8 @@ languageNodes = parent ? parent.querySelectorAll( '.interlanguage-link-target' ) : []; standalone = isUsingStandaloneLanguageButton(); + $target.attr( 'data-uls-loaded', true ); + // Setup click handler for ULS launchULS( $target, @@ -483,7 +490,8 @@ // if there are many languages. Warning: Both this module and ext.uls.compactlinks // module may run simultaneously. Using event delegation to avoid race conditions where // the trigger may be created after this code. - $( document ).one( 'click', '.mw-interlanguage-selector', loadContentLanguageSelector ); + $( document ).on( 'click', '.mw-interlanguage-selector', loadContentLanguageSelector ); + } }