对于使用 XMLHttpRequest 更改其内容的页面,合适的事件侦听器是什么?

What is the appropriate event listener for a page that change its content using XMLHttpRequest?

通过在 C# 中使用 GeckoWebBrowser,是否可以知道页面何时使用 XMLHttpRequest 完成更新其内容?我以为 DocumentCompleted 事件会完成,但由于页面没有重新加载,它不会启动...

您可以使用 mutation observer 监视 document.body 的子树,并假设在您收到最后一个通知 20 毫秒后页面已完成修改(比方说)。

在 JavaScript 中,它看起来像这样:

(function() {
  var observer;

  // The click handler that appends content after a random delay
  document.querySelector('input').addEventListener("click", function() {
    if (!observer) {
       hookupObserver();
    }
    setTimeout(function() {
      var p = document.createElement('p');
      p.innerHTML = "New content added at " + Date.now();
      document.querySelector('div').appendChild(p);
    }, 500 + Math.round(Math.random() * 500));
  }, false);
  
  // Watching for subtree mods to `document.body`:
  function hookupObserver() {
    var timer = 0;
    observer = new MutationObserver(function() {
      clearTimeout(timer);
      timer = setTimeout(done, 40);
    });
    observer.observe(document.body, {childList: true, subtree: true});
  }
  
  function done() {
    timer = 0;
    alert("Modification complete");
  }
})();
<input type="button" value="Click to simulate async modification">
<div>This is the page</div>