Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在代码中跟踪JavaScript动态创建的元素的起源?_Javascript_Html_Debugging_Google Chrome Devtools_Sapui5 - Fatal编程技术网

如何在代码中跟踪JavaScript动态创建的元素的起源?

如何在代码中跟踪JavaScript动态创建的元素的起源?,javascript,html,debugging,google-chrome-devtools,sapui5,Javascript,Html,Debugging,Google Chrome Devtools,Sapui5,有一个SAPUI5应用程序。由xml创建的Html视图。JavaScript控制器。此应用程序的某些元素(例如按钮)是在各个视图的控制器中动态创建的。也就是说,无法使用元素的id在控制器中获取它,因为id是动态创建的。希望获取应用程序中动态创建的元素来修改它们,例如修改按钮。将动态创建的元素追溯到其创建代码的最佳方法是什么?例如,如何在JavaScript控制器中追溯按钮的来源?这是一个巨大的应用程序,一个视图有多个控制器。我不只是懒惰 组件的renderer类中的render函数是(最终)创建

有一个SAPUI5应用程序。由xml创建的Html视图。JavaScript控制器。此应用程序的某些元素(例如按钮)是在各个视图的控制器中动态创建的。也就是说,无法使用元素的id在控制器中获取它,因为id是动态创建的。希望获取应用程序中动态创建的元素来修改它们,例如修改按钮。将动态创建的元素追溯到其创建代码的最佳方法是什么?例如,如何在JavaScript控制器中追溯按钮的来源?这是一个巨大的应用程序,一个视图有多个控制器。我不只是懒惰


组件的renderer类中的
render
函数是(最终)创建DOM元素的函数。您可以向其中插入调试器语句,如下所示:

let __buttonRender = sap.m.ButtonRenderer.render;

sap.m.ButtonRenderer.render = function() {
    let control = arguments[1];
    console.log('Creating button: ', control.sId);
    debugger;
    return __buttonRender.apply(this, arguments);
}

您可能可以根据此处的Id修改控件对象。我不确定你的最终目标是什么。渲染器可能从XML中获取属性和数据,因此如果您想修改按钮,我会在数据源中进行修改。上述方法可以让您在模型到达DOM之前对其进行黑客攻击,但这有点令人讨厌。

您不能。完成的元素和它的创建方式之间没有关系。它要么在DOM中,要么不在DOM中,这就是它的全部内容。它可能是手工编写的,也可能是由服务器端或客户端代码创建的,但是您无法判断,除非创建它的代码添加了一些自定义属性来表示这一点。你所能做的就是一步一步地浏览代码,或者把它缩小到构造那种类型的元素的地方,或者别的什么地方。这是一个小问题。如果我可以问,你对一些自定义属性了解多少?我不知道,这不太可能,但也许他们可以编写
。就像我说的,我从来没有见过这样做,但是如果你想在你的代码中有这样的可追溯性,你可以控制创建元素的代码,你可以让它这样写不幸的是,只需要在代码中找到那些元素。没有为此应用程序编写一行代码。我想我别无选择,只能跳过代码。无论如何,谢谢您如果它们是动态创建的,您可以尝试在源代码中搜索
“new Button”
“new sap.m.Button”
。在每个按钮的构造函数中添加自定义类或其他自定义属性,直到找到所需按钮的构造函数。