javascript - 打开包含 ExtJS 网格的浏览器弹出窗口的最佳方式

标签 javascript extjs internet-explorer-11 extjs6

在我们的 ExtJS 应用程序中,我们有一些菜单和一个选项卡面板。单击 menuItem 打开一个网格。

我们有一个要求,用户可以在两种模式中的任何一种模式下打开包含网格的显示:

  1. 内联 - 网格将作为 tabpanel 中的选项卡项打开。
  2. 弹出 - 使用 window.open 打开一个新的浏览器窗口 首先加载 ExtJS 库,然后加载网格。 弹出浏览器窗口是为了方便多显示器

所以这里的问题是,每当我们打开弹出窗口时,都需要 ExtJS 库,并且它在 IE 中占用大量内存。

有没有其他方法可以使用 ExtJS 网格加载浏览器弹出窗口,而无需加载整个 ExtJS 框架?

或者任何其他想法都是最受欢迎的,因为我们确实在 IE 中面临很多内存问题,而且用户不愿意使用 chrome。

提前致谢。

最佳答案

如果不先在新窗口中加载 Ext 框架(或至少是网格所需的部分),就不可能将网格加载到新窗口中。您无法访问并使用父窗口的 ExtJS 框架的副本,因为 ExtJS 要求组件位于同一窗口中才能正常工作。这部分是由浏览器安全性造成的,浏览器安全性禁止在窗口之间复制或共享某些结构,部分是由 ExtJS 架构造成的。

关于浏览器安全性,当您仅复制网格内容时甚至可能会导致问题。确保测试所有不同的浏览器。在窗口之间复制数据可能需要序列化和反序列化才能在所有浏览器中工作。例如,我无法在 Chrome 中的浏览器窗口和 iframe 之间复制简单的 JavaScript 日期,它们出现了 null。我必须序列化记录,传输它们,然后再次反序列化它们:

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
},

关于javascript - 打开包含 ExtJS 网格的浏览器弹出窗口的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44920628/

相关文章:

php - 无法使用 jQuery 获取复选框的值

rest - 如何使用 ExtJS 3.1.0 获取 FormPanel 以发布 JSON?

extjs - 如何正确取消商店过滤请求

javascript - 使用 FileSaver 在 IE11 上保存文件

html - IE11 CSS 选择列表自动换行

c# - ASP.Net 4.0,JavaScript 在 IE 11 中不输出

javascript - 在 javascript/jQuery 中检测滚动元素的偏移量

javascript - 灯箱在 IE8 中不工作

javascript - 如何为柱形图赋予动态颜色

javascript - 我可以在禁用按钮时调用函数并在 FF 或 Chrome 中检查元素 CSS 样式时修改设置启用吗?