如何在extjs新打开的浏览器中获取id
Posted
技术标签:
【中文标题】如何在extjs新打开的浏览器中获取id【英文标题】:how to get the id in extjs newly opened browser 【发布时间】:2016-01-22 14:50:05 【问题描述】:我正在使用以下代码创建一个弹出窗口:
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”变量,它警告为未定义 提前致谢!
【问题讨论】:
【参考方案1】:如果您想选择最近创建的Ext.window.Window
的id
属性,您可以使用window.getId()
。
如果您想选择子 iframe
的实际 id
,您可以使用类似
Ext.dom.Query.select('iframe')[0].id
.
Working fiddle
更多关于在this answer 中使用 ExtJS 浏览 DOM。
【讨论】:
嘿,谢谢...!!实际上,您正在记录 app.js 中的值,但我需要的是从新创建的框架中获取 ID,这意味着来自从 window.show() 创建的窗口;功能。我尝试了 self.id、window.id、this.id 但没有任何效果 我明白了,你想从 iframe JS 代码中获取 ID。我想您必须将 ID 作为 iframe url 的一部分(或在加载 iframe 内容时以其他方式传递),因为<iframe>
标签是主浏览器窗口(ExtJS 工作的地方)的一部分,而 iframe 内容在其他窗口中执行..
实际检查这个答案,我猜它是你要找的 - ***.com/a/7647123/2667065【参考方案2】:
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
我更喜欢引用而不是 ID。 这让我从 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)
【讨论】:
Hii 尝试了 window.id 但它没有显示 iframe 窗口 ID 当然,window.id 显示 id : 'exportWin' + (++eWin)。 iframe id 是 eWin,对吧? 您好,首先非常感谢您的快速回复。不,实际上,当我使用 window.id 时,它无论如何都显示未定义,但我期望看到的是 'exportWin' + (++eWin)(即 exportWin1、exportWin2、exportWin3 ...)而不是 ewin iframe 的 id 为 eWin,面板的 id 为 'exportWin' + (++eWin)。看看小提琴,你可以找到一种方法来获取两个 Id。 嘿,谢谢...!!实际上,您正在记录 app.js 中的值,但我需要的是从新创建的框架中获取 ID,这意味着来自从 window.show() 创建的窗口;功能。我尝试了 self.id、window.id 和 this.id,但没有任何效果以上是关于如何在extjs新打开的浏览器中获取id的主要内容,如果未能解决你的问题,请参考以下文章
angularjs 中打开新的浏览器窗口(解决window.open(),浏览器拦截问题)
如何在使用 javascript 框架(如 ExtJs)创建的应用程序中集成支付网关?