我正在使用以下代码创建一个弹出窗口:
var window = Ext.create('Ext.window.Window',{
title : headerMsg,
width : 350,
me:me,
height : 250,
layout : 'fit',
plain : true,
name : 'exportWin',
id : 'exportWin' + (++eWin),
buttonAlign : 'center',
items : [{
xtype : 'box',
autoEl : {
tag : 'iframe',
src : url,
id : eWin,
name : 'ExportFrame',
height : '100%',
width : '100%',
style : 'cursor:pointer;top:10px'
}
}
]
});
window.show();
一切正常,现在我需要在新打开的浏览器中获取id。
我试过window.id,self.id和this.id,但没有任何作用。 但是window.name工作正在警告' ExportFrame'正如预期的那样,window.id没有警告' eWin'变量它是警告未定义 提前谢谢!
答案 0 :(得分:0)
Ext.create返回一个对象,因此您只需使用window.id来访问该对象。
要获取iframe的ID,您可以使用:
window.items.items[0].autoEl.id
我使用您的以下修改过的脚本对其进行了测试:
var eWin = 1337;
var Ywindow = Ext.create('Ext.window.Window',{
title : 'dummy',
width : 350,
//me:me,
height : 250,
layout : 'fit',
plain : true,
name : 'exportWin',
id : 'exportWin' + (++eWin),
buttonAlign : 'center',
items : [{
xtype : 'box',
autoEl : {
tag : 'iframe',
src : 'https://ccc.de',
id : eWin,
name : 'ExportFrame',
height : '100%',
width : '100%',
style : 'cursor:pointer;top:10px'
}}]});
Ywindow.show();
console.log(Ywindow.items.items[0].autoEl.id);
但是当你在代码中写下它时:
eWin or ++eWin. // in our case: 1338
我更喜欢在Ids上引用。 这为MVVM和MVC模式提供了更多功能。 https://docs.sencha.com/extjs/6.0/application_architecture/view_controllers.html
顺便说一句,调用var窗口不是最佳的 - window是一个全局的JS浏览器对象。
因此,我为演示目的创建了一个小提琴,这应该适用于ExtJS 4+。
https://fiddle.sencha.com/#fiddle/14do
(在控制台中查看,你会找到两个ID)
答案 1 :(得分:0)
如果您想选择已创建id
的{{1}}属性,则可以使用Ext.window.Window
。
如果您想选择孩子window.getId()
的实际id
,您可以使用类似的内容
iframe
。
更多关于使用this answer中的ExtJS浏览DOM的信息。