Ожидание загрузки элемента после загрузки страницы - PullRequest
4 голосов
/ 14 сентября 2010

У меня есть функция, которая загружает SVG Dom из файла. В настоящее время он создает элемент embed и помещает его в документ, а затем ожидает его загрузки с событием onload. Однако, по-видимому, onload не вызывается для элементов, помещенных в документ после загрузки страницы. Есть ли способ, которым я могу зарегистрировать функцию для вызова после завершения загрузки элемента?

Вот что у меня есть:

function loadSVG(svgFilename, callback)
{
  // Loads data from an svg file
  // loadSVG(
  //           svgFilename, // The path to the file to load
  //           callback     // The function to be called with the
  //                        // SVG document once it loads.
  //        );            
  var embed = document.createElement("embed");
  embed.src = svgFilename;
  embed.onload = function() // Doesn't get called because page has already loaded
  {
    var doc = embed.getSVGDocument();
    document.getElementById("SVGLoader").removeChild(embed);
    callback(doc);
  };
  document.getElementById("SVGLoader").appendChild(embed);
}

Ответы [ 2 ]

2 голосов
/ 14 сентября 2010

Я выяснил проблему, я загружал документ SVG в теге div, который был скрыт с помощью style="display:none".По какой-то причине браузер не загрузил embed, когда он был в этом теге.Когда я удалил атрибут style, событие onload сработало так, как я ожидал.

1 голос
/ 14 сентября 2010

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

Если у вас есть контроль над документом SVG, не могли бы вы добавить в него скрипт, которыйвызывает функцию в окне браузера?

Или, как подсказывает ответ на этот вопрос, опросить, завершил ли загрузка документ SVG.

...