Load jquery.ime only when user focus on editable fields

To reduce javascript size for page load.

Change-Id: Ibf2ccd5b5501720837051d6e268b122e8a9f8590
This commit is contained in:
Santhosh Thottingal
2013-07-25 17:33:54 +05:30
committed by Amir E. Aharoni
parent 39f4714043
commit 82fbfe62e7
3 changed files with 45 additions and 28 deletions

View File

@@ -19,7 +19,7 @@
( function ( $, mw, document, undefined ) {
'use strict';
var mwImeRulesPath, inputSelector, inputPreferences;
var mwImeRulesPath, inputSelector, inputPreferences, ulsIMEPreferences, customHelpLink;
mwImeRulesPath = mw.config.get( 'wgExtensionAssetsPath' ) +
'/UniversalLanguageSelector/lib/jquery.ime/';
@@ -57,8 +57,7 @@
return unique.slice( 0, 6 );
};
// Extend the ime preference system
$.extend( $.ime.preferences, {
ulsIMEPreferences = {
save: function ( callback ) {
if ( !this.registry.isDirty ) {
@@ -102,15 +101,10 @@
getDefaultLanguage: function () {
return mw.config.get( 'wgContentLanguage' );
}
} );
// MediaWiki specific overrides for jquery.ime
$.extend( $.ime.defaults, {
imePath: mwImeRulesPath
} );
};
// Add a 'more settings' link that takes to input settings of ULS
$.fn.imeselector.Constructor.prototype.helpLink = function () {
customHelpLink = function () {
var $disableInputToolsLink, $moreSettingsLink,
imeselector = this;
@@ -173,23 +167,50 @@
$( inputSelector ).trigger( 'destroy.ime' );
};
mw.ime.setup = function () {
mw.ime.init = function () {
if ( !$.ime ) {
// jquery.ime not loaded yet.
return;
}
if ( $.ime.preferences.isEnabled ) {
// mw.ime already initialized.
return;
}
// Extend the ime preference system
$.extend( $.ime.preferences, ulsIMEPreferences );
// MediaWiki specific overrides for jquery.ime
$.extend( $.ime.defaults, {
imePath: mwImeRulesPath
} );
// Load the ime preferences
$.ime.preferences.load();
$.fn.imeselector.Constructor.prototype.helpLink = customHelpLink;
};
mw.ime.setup = function () {
mw.ime.init();
$( 'body' ).on( 'focus.ime', inputSelector, function () {
var imeselector, $input, noImeSelector;
// It's possible to disable IME through the settings
// panels before it was initialized, so we need to check
// that it's supposed to be initialized
if ( !$.ime.preferences.isEnabled() ) {
noImeSelector = mw.config.get( 'wgULSNoImeSelectors' ).join( ', ' );
$input = $( this );
if ( !$.ime ) {
mw.loader.using( 'jquery.ime', function () {
$input.trigger( 'focus.ime' );
} );
return;
}
$input = $( this );
noImeSelector = mw.config.get( 'wgULSNoImeSelectors' ).join( ', ' );
mw.ime.init();
if ( $input.is( '.noime' ) || !$.ime.preferences.isEnabled() ) {
return;
}
if ( noImeSelector.length && $input.is( noImeSelector ) ) {
$input.addClass( 'noime' );
return;
}
$input.ime( {
@@ -238,12 +259,7 @@
$( document ).ready( function () {
mw.uls.init( function () {
// Load the ime preferences
$.ime.preferences.load();
if ( $.ime.preferences.isEnabled() ) {
mw.ime.setup();
}
mw.ime.setup();
} );
} );