Sapui5 获取网站上特定类型的所有元素

Sapui5 获取网站上特定类型的所有元素,sapui5,Sapui5,我需要在网站上查找所有输入元素(sap.m.Input)。 我知道我可以通过sap.ui.getCore().byId()通过ID找到元素,但这对我没有帮助 我正在寻找类似于sap.ui.getCore().getByType(“sap.m.Input”)的东西。我该怎么做 编辑:我无法访问该网站的源代码,我正在通过chrome扩展在当前页面使用SAPUI5的网站上注入javascript //在控制器中 this.getView().getControlsByFieldGroupId(“m

我需要在网站上查找所有输入元素(
sap.m.Input
)。 我知道我可以通过
sap.ui.getCore().byId()
通过ID找到元素,但这对我没有帮助

我正在寻找类似于
sap.ui.getCore().getByType(“sap.m.Input”)
的东西。我该怎么做


编辑:我无法访问该网站的源代码,我正在通过chrome扩展在当前页面使用SAPUI5的网站上注入javascript

//在控制器中
this.getView().getControlsByFieldGroupId(“myInputs”).filter(c=>c.isA(“sap.m.Input”));
从整个应用程序 在以下方面发挥杠杆作用:

const allRegisteredControl=sap.ui.getCore().byFieldGroupId(“”;//从…起https://stackoverflow.com/a/54227512/5846045
const inputControls=allRegisteredControls.filter(c=>c.isA(“sap.m.Input”);


这将返回给定类型的所有已注册实例。请注意,已销毁的元素不会被包括在内。

您可以做的是将每个输入字段设置为如下所示的特定字段组

<input fieldGroupIds="MyGroup" />
var aMyGroupControls = sap.ui.getCore().byFieldGroupId("MyGroup");
aMyGroupControls将填充一组控件

我找到了这个解决方案:

我使用 document.getElementsByClassName(“sap.m.Input”)`


然后,我通过对该数组的每个元素的ID调用
sap.ui.getCore().byId()
来获取相应的UI5元素

“网站”是指应用程序生命周期中创建的所有输入控件吗?或者只是用户当前查看的页面中的那些?您的第二个猜测是正确的,我只需要用户当前查看的页面中的那些。现在,最后一次编辑更改了所有内容:P不确定我的答案是否有帮助我没有访问网站源代码的权限,因此我无法将自定义FieldGroupID添加到每个输入中。我很喜欢你的第二个解决方案,但你能澄清一下“整个应用程序”在这里的含义吗?@KonstantinDobler所说的“应用程序”是指用户当前使用的UI5 web应用程序。我使用术语app来表示第二种解决方案是检索自web应用启动以来已创建但尚未销毁的所有控件(在我们的示例中是
sap.m.Input
)。由于UI5应用程序通常由多个视图/页面组成,因此您可能会得到一些误报,这些误报是在某个时间创建的,但未包含在用户当前查看的视图/页面中。我发现无法检查给定控件当前是否对用户可见。使用这一点,我将能够修改“整个应用程序”解决方案,使其仅包括当前页面上的控件。