javascript - internet - permitir ventanas emergentes firefox
La mejor manera de abrir la ventana emergente del navegador que contiene la cuadrĂcula ExtJS (3)
Existe una herramienta llamada Sencha CMD. Se puede tomar para construir solo las partes de Ext js que se definen como dependencias (requiere sección en las definiciones de sus componentes). Así que todos los demás componentes que vienen con Ext JS serán ignorados. Tienes que descargar las fuentes ext js y descubrir cómo usar esa herramienta
En nuestra aplicación ExtJS
, tenemos algunos menús y un panel de pestañas. Al hacer clic en un menuItem
abre una cuadrícula.
tenemos un requisito donde el usuario puede abrir una pantalla que contenga una cuadrícula en cualquiera de los dos modos:
- En línea: la cuadrícula se abrirá como un elemento de pestaña en el
tabpanel
. - Ventana emergente: se abre una nueva ventana del navegador usando
window.open
y se carga primero la biblioteca ExtJS completa y luego se carga la cuadrícula. Ventana emergente como ventana del navegador es para facilitar múltiples monitores .
Entonces, el problema aquí es que cada vez que abrimos una ventana emergente, la biblioteca ExtJS es necesaria y está ocupando mucha memoria en IE.
¿Hay alguna otra manera en que podamos cargar una ventana emergente del navegador con la cuadrícula de ExtJS sin cargar todo el marco de ExtJS?
O cualquier otra idea es bienvenida, ya que estamos enfrentando muchos problemas de memoria en IE y los usuarios no están dispuestos a usar Chrome.
Gracias por adelantado.
No es posible cargar una cuadrícula en una nueva ventana sin cargar primero el marco Ext (o al menos las partes necesarias para una cuadrícula) en la nueva ventana. No puede acceder a la copia del marco de trabajo de ExtJS de la ventana principal y usarla porque ExtJS requiere que los componentes estén en la misma ventana para que funcionen correctamente. Esto se debe en parte a la seguridad del navegador, que prohíbe copiar o compartir ciertas estructuras entre ventanas, y en parte por la arquitectura ExtJS.
Con respecto a la seguridad del navegador, eso puede incluso causar problemas cuando simplemente copie el contenido de la cuadrícula. Asegúrese de probar todos los navegadores diferentes. La copia de datos entre ventanas puede requerir que serialice y deserialice para que funcione en todos los navegadores. Por ejemplo, no pude copiar fechas de JavaScript simples entre una ventana del navegador y un iframe en Chrome, aparecieron como null
. Tuve que serializar los registros, transmitirlos y deserializarlos nuevamente:
var serializedRecords = dataStore.getRange().map(function(record) {
return record.getData({serialize:true, persist:true}); // <- serialization required
});
iframe.contentWindow.Ext.getStore("DataStore").
loadRawData(serializedRecords); // <- loadRawData deserializes records
},
Que tal de ejecutar
var popupWin = window.open(''...'');
popupWin.Ext = window.Ext;
y no cargar ExtJs
en ventana secundaria