Подтвердить что ты не робот

Доступ JavaScript во внутренний DOM SVG

test.php - объект SVG, создаваемый с помощью PHP.

<object data="test.php" type="image/svg+xml" id="SVG" />
<script>
    var mySVG = document.getElementById("SVG");
    var svgDoc = mySVG.contentDocument;

svgDoc имеет значение null. (и поэтому я не могу получить доступ к элементам svg через JS.) Он должен работать, глядя на этот вопрос. Что я делаю неправильно? Как я могу получить contentDocument моего SVG?

4b9b3361

Ответ 1

Вам нужно подождать, пока SVG будет загружен, и вы сможете получить доступ к contentDocument:

 var mySVG = document.getElementById("SVG");
 var svgDoc;
 mySVG.addEventListener("load",function() {
      svgDoc = mySVG.contentDocument;
      alert("SVG contentDocument Loaded!");
 }, false);

Ответ 2

Не уверен, что это ответ, но это сработало для меня. У меня была такая же проблема и svgObject возвращается null:

var svgObject = document.getElementById('svgObject').contentDocument;

Затем мне пришло в голову, что я запускаю свою HTML-страницу локально: file:///C: /wwwroot/App_dev/OverLay/Overlay03.html

Запускаем его с сервера: http://localhost: 62551/App_dev/OverLay/Overlay03.html

Он работал безупречно, и svgObject возвращал свое содержимое, тогда я мог получить div внутри него.