Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/146.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_Reactjs_Ecmascript 6_Es6 Promise - Fatal编程技术网

Javascript 承诺后的火灾事件

Javascript 承诺后的火灾事件,javascript,reactjs,ecmascript-6,es6-promise,Javascript,Reactjs,Ecmascript 6,Es6 Promise,我有一个像webproxy一样工作的项目。使用它对其他站点进行更改。(这一部分很重要,我只能注入javascript代码,但不能更改站点本身的代码。) 我正试图修改一个网站作出的反应,我不能这样做。该网站通过api和承诺获取内容。所以我有个问题: 如果我使用: window.addEventListener('DOMContentLoaded', function () {   document.getElementsByClassName ('content-class')[0].inner

我有一个像webproxy一样工作的项目。使用它对其他站点进行更改。(这一部分很重要,我只能注入javascript代码,但不能更改站点本身的代码。)

我正试图修改一个网站作出的反应,我不能这样做。该网站通过api和承诺获取内容。所以我有个问题:

如果我使用:

window.addEventListener('DOMContentLoaded', function () {

  document.getElementsByClassName ('content-class')[0].innerHTML="New Content";
});
window.onload = function() {
 document.getElementsByClassName ('content-class')[0].innerHTML="New Content";
}
内容尚不存在且不起作用

如果我使用:

window.addEventListener('DOMContentLoaded', function () {

  document.getElementsByClassName ('content-class')[0].innerHTML="New Content";
});
window.onload = function() {
 document.getElementsByClassName ('content-class')[0].innerHTML="New Content";
}
内容出现一段时间后,它就开始工作了

我试过了

var content = document.getElementsByClassName('content-class')[0];

content.addEventListener ('load', function() {

    document.getElementsByClassName('content-class')[0].innerHTML="New Content";

});
也不成功

我怎样才能解决这个问题?有没有办法在所有承诺都完成后触发事件


或者检测元素是由承诺创建的并触发事件。

据我所知,无法跟踪React应用程序中发生的承诺


然而,现代浏览器确实有变异观察者api,可以用来检测react应用程序对DOM所做的更改

我曾经遇到过类似的问题……我很想知道答案会是什么。在我的例子中,我通过添加一个超时函数来解决问题,该函数将每隔X秒重试一次,以查找页面中的组件……我认为您无法判断承诺何时完成。但是,您可以使用一个变异观察者来检查对DOM所做的更改,并相应地进行更改。听起来,您试图修改的内容可能是通过javascript添加到页面中的,而不是页面的实际HTML中。没有标准的方法或任何好的方法可以知道何时所有页面Javascript都完成了它们的工作,因为它们可以完成可能需要时间完成的所有事情(比如使用Ajax调用)。您可以在页面被修改时使用DOM,或者从DOMContentLoaded开始,您可以使用计时器“轮询”查找
'content-class'
元素存在的时间。@kevmc非常感谢。这正是我需要的。如果你用回答代替评论。我标记为解决方案