Я не думаю, что субъект дал хорошее объяснение ...
Ну, концепция того, что я хотел бы сделать, проста.Я хочу, чтобы экранное наложение появлялось до того, как что-то было выполнено, и исчезало после этого.
Я попытался с помощью jQuery.show () / jQuery.hide (), но у меня ничего не получилось.
CSS
#ExtensionLoading {
background: #000;
width: 100%;
min-height: 100%;
position: fixed;
z-index: 9999;
display: none;
opacity: .5;
}
JavaScript
Helpers.blackout( 'show' );
$( JSON.parse( Cookie.read( 'ListOfThings' ) ) ).each( function() {
$( '#content' ).html(
$( '#content' ).html().replace(
new RegExp( this.itemText, 'g' ),
'<a href="' + Helpers.url( { 'mod': 'items', 'p': this.itemID } ) + '">' + this.itemText + '</a>'
)
);
});
Helpers.blackout( 'hide' );
Это проблемный код.Но это не отдельный код.
Помощники
function Helpers() {}
Helpers.blackout = function( action ) {
if( $( 'body' ).has( 'div#ExtensionLoading' ).length == 0 ) {
$( 'body' ).prepend( '<div id="ExtensionLoading"></div>' );
}
if( action == 'show' ) {
$( '#ExtensionLoading' ).show();
} else if( action == 'hide' ) {
$( '#ExtensionLoading' ).hide();
}
};
JSON-манипуляции выполняются [сценарием Дугласа Крокфорда] [1]
[1]: https://github.com/douglascrockford/JSON-js/blob/master/json2.js, а Cookie - это просто объект Cookie, ничего особенного.
Если я прокомментирую строку, ответственную за скрытие элемента, все будет отлично.Появится экран наложения, и благодаря его непрозрачности я вижу применяемую подпрограмму.
Но, очевидно, наложение на экран не исчезает, потому что я не говорю, чтобы оно исчезло.Но если я раскомментирую эту строку, экран больше не появится.
Это странно.Это как если бы "hide" вызывался сразу после "show".Я думаю так, потому что, если я изменю в объекте помощников hide () на:
$( '#ExtensionLoading' ).hide('slow' );
Я очень быстро вижу, что наложение появляется и исчезает за несколько секунд до того, как произойдут замены.