Как проверить, загружается ли встроенный документ SVG в странице HTML?

Вы также можете подключить прототип отправки XMLHttpRequest. Это будет работать для всех отправлений (jQuery / dojo / etc) с помощью одного обработчика.

Я написал этот код для обработки ошибки на 500 страниц с истекшим сроком действия, но он должен работать так же, как и ловушку перенаправления 200. Готов к записи wikipedia в XMLHttpRequest onreadystatechange о значении readyState.

// Hook XMLHttpRequest
var oldXMLHttpRequestSend = XMLHttpRequest.prototype.send;

XMLHttpRequest.prototype.send = function() {
  //console.dir( this );

  this.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 500 && this.responseText.indexOf("Expired") != -1) {
      try {
        document.documentElement.innerHTML = this.responseText;
      } catch(error) {
        // IE makes document.documentElement read only
        document.body.innerHTML = this.responseText;
      }
    }
  };

  oldXMLHttpRequestSend.apply(this, arguments);
}

32
задан Ilya 3 December 2008 в 16:26
поделиться

3 ответа

Вы могли попытаться голосовать время от времени.

function checkReady() {
    var svg = document.getElementById("chart").getSVGDocument();
    if (svg == null) {
        setTimeout("checkReady()", 300);
    } else {
        ...
    }
}
-4
ответ дан 27 November 2019 в 21:04
поделиться

Вы можете назначить onload обработчик событий на элемент в рамках Вашего документа SVG и иметь его, вызывают функцию JavaScript в странице HTML. onload наносит на карту к SVGLoad.

http://www.w3.org/TR/SVG11/interact.html#LoadEvent

событие вызвано в пункте, в котором пользовательский агент полностью разобрал элемент и его потомков и готов действовать соответственно на тот элемент

-1
ответ дан 27 November 2019 в 21:04
поделиться

Вкл. ваш элемент встраивания (например,g 'embed', 'object', 'iframe') в основном документе добавьте атрибут onload , который вызывает вашу функцию, или добавьте прослушиватель событий в скрипт, например embeddingElm.addEventListener ('load ', callbackFunction, false) . Другой вариант - прослушивание DOMContentLoaded , в зависимости от того, для чего вы этого хотите.

Вы также можете добавить прослушиватель загрузки в основной документ. jQuery (document) .ready не означает, что все ресурсы загружены, просто в самом документе есть модель DOM, готовая к действию. Однако обратите внимание, что если вы прослушиваете загрузку всего документа, ваша функция обратного вызова не будет вызываться до тех пор, пока не будут загружены все ресурсы в этом документе, css, javascript и т. Д.

Если вы используете встроенный svg, тогда jQuery (document ) .ready , однако, будет работать нормально.

В следующем примечании вы можете рассмотреть возможность использования embeddingElm.contentDocument (если доступно) вместо embeddingElm.getSVGDocument () .

22
ответ дан 27 November 2019 в 21:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: