Intereting Posts
Нижний колонтитул выдвигается, когда клавиатура открыта HTML / CSS? Ширина списка распаковки в IE Ошибка Chrome? Контент не воспроизводит несколько столбцов должным образом Фильтры CSS разбивают 3D-преобразования Jssor full width Slider – непрерывная петля / next / prev изображения частично видимые Черные границы браузера ios 7 вокруг элементов div css анимация вращать и переводить не работает вместе В чем преимущества использования данных, а не x-префикса для пользовательских атрибутов? Javascript shake html элемент PHP для преобразования тега в пользовательский XML Как создать плавающий список DIV в столбцах, а не в строках Добавление уникального идентификатора или числа в конец id для анимации jQuery с использованием ACF Как я могу центрировать этот динамически созданный 3D-объект на его родительском? Как исправить фоновое изображение внутри div html-код для Google Maps не работает должным образом

Как получить доступ к содержимому тега «embed» в HTML

У меня есть SVG-файл, и я не хочу вставлять его в файл HTML, потому что, ну, он становится беспорядочным. Поэтому после консультаций с w3schools, тег «embed» казался самым безопасным способом включить внешний SVG-файл в HTML.

 

Тем не менее, мне нужно получить доступ к элементам svg через DOM через javascript в главном html-файле. К сожалению, ни

 document.getElementById('my_svg_id') 

ни

 document.getElementById('svgsource').contentDocument 

работает в любом браузере. Использование тега «object» также не делает трюк.

Завершите ход!

Оказывается, вы можете увидеть эту ссылку: http://xn--dahlstrm-t4a.net/svg/html/get-embedded-svg-document-script.html

(Кроме того, идите и проголосуйте за некоторые другие ответы Эрика Далстрема, чтобы дать ему несколько моментов за то, что я захватил его ответ!)

Используйте .getSVGDocument() . Кажется, это работает для , и :

 document.getElementById('svgsource').getSVGDocument() 

Для или вы также можете использовать .contentDocument :

 document.getElementById('svgsource').contentDocument 

Для IE7 или IE8 я считаю, что вам не повезло.

Вы пытались использовать элемент вместо этого? (атрибут данных вместо src)

Я верю, что в IE9 вы можете использовать элемент для загрузки SVG, и в этом случае вы можете получить доступ к свойству contentDocument , но с предыдущими версиями IE вам может быть не повезло. (Другие браузеры должны позволить вам использовать contentDocument с и .)

Краткий ответ: вы можете попробовать вставить ссылки на SVG-файл. Для элементов и используйте:

 e.parentElement.replaceChild(e.contentDocument.documentElement.cloneNode(true), e); 

… где e является ссылочным элементом. Если вам абсолютно необходим элемент то измените .contentDocument в приведенном выше коде на .getSVGDocument() (требуются круглые скобки). Обратите внимание, однако, что .getSVGDocument() теперь устарел и поэтому не рекомендуется, но в любом случае также рекомендуется использовать или вместо .

Для получения более полного ответа см. Мой другой ответ SO по этому вопросу .