Я хотел бы иметь маску для всей страницы, которая не будет удалена, пока вся страница не будет полностью загружена. В частности, у меня есть карта, созданная с помощью OpenLayers и GeoExt, и я пытаюсь использовать нагрузочную маску ExtJS. Тем не менее, я не смог найти никакого другого способа сделать это, кроме использования ручного setTimeout, который я не хочу использовать. Я бы предпочел удалить маску, только если страница полностью загружена. Я попытался использовать событие 'loadend' на карте openLayers, а также windows.onload и т. Д .:
Моя карта и конфигурация loadMask:
var mask = new Ext.LoadMask(Ext.getBody(), {msg:"Please wait..."});
mask.show();
Ext.onReady(function() {
var options = {
controls: [new OpenLayers.Control.Navigation()],
maxExtent: new OpenLayers.Bounds(-20037508.34, -20037508.34, 20037508.34, 20037508.34),
units: 'm',
allOverlays: false
}
var map = new OpenLayers.Map(options);
map.events.register("loadend", map , function() {
mask.hide(); alert('howdy');
});
var mapPanel = new GeoExt.MapPanel({
title: "Map",
map: map,
id: 'mapPanel',
layerStore: map.layers,
//Set the map to be centered at specified longitude/latitude, transform our layers (SRID=4326) to display properly on Google
//base layers (SRID=900913)
center: new OpenLayers.LonLat(95.20, 30.34).transform(new OpenLayers.Projection("EPSG:4326"), new OpenLayers.Projection("EPSG:900913")),
zoom: 7,
region: "center",
tbar: [measureLength, '-', measureArea, '-'],
bbar: [
{
xtype: "label",
text: "Scale = 1 : "
}
],
items: [{
xtype: "gx_zoomslider",
vertical: true,
height: 300,
aggressive: true,
x: 10,
y: 20,
plugins: new GeoExt.ZoomSliderTip()
}]
});
Кажется, это событие никогда не происходит, так как я никогда не получаю предупреждающее сообщение. Я действительно очень хочу заставить это работать, другие попытки были:
window.onload = mask.hide();
после Ext.onReady и в конце тега, но затем маска скрывается до завершения загрузки карты. Кто-нибудь может поделиться какой-то проницательностью, я бы очень признателен!
elshae