Какая разница (с точки зрения сценариев) в использовании тега or и для доступа к элементам SVG? Может быть, кто-то может включить простые примеры.
<iframe>
Сценарии, пытающиеся получить доступ к содержимому фрейма, подчиняются той же политике происхождения и не могут получить доступ к большинству свойств в другом объекте окна, если он был загружен из другого домена. Это также относится к сценарию внутри фрейма, пытающемуся получить доступ к его родительскому окну. Междоменная связь все еще может быть достигнута с помощью window.postMessage.
Источник: https://developer.mozilla.org/en/HTML/Element/iframe#Scripting
Доступ к контенту iframe осуществляется методом iframe_element.contentWindow
:
<html>
<body>
<iframe id="SVG_frame" src="image.svg"></iframe>
</body>
<script>
var SVG_frame = document.getElementById ( "SVG_frame" );
var SVG_content = null;
function getContent ()
{
SVG_content = SVG_frame.contentWindow;
SVG_content ? alert ( "YAY!" ) : alert ( "BOO!" );
}
SVG_frame.onload = getContent;
</script>
</html>
<embed>
Пример (просмотреть исходный код): https://jwatt.org/svg/demos/scripting-across-embed.html
(оба метода дают сбой хотя бы в Chromium)
<object>
Пример (просмотреть исходный код): https://jwatt.org/svg/demos/scripting-across-object.html
Может ли SVG оценивать математические выражения в
атрибуты элемента (просто чтобы быть уверенным)?
как <element attribute="48/2*(9+3)"/>
?
Я не нашел ни слова об этом в SVG spec .
EDIT
Лично я рекомендую использовать <object>
+ Схема URI данных и / или object_element.contentDocument
. Я тестировал как в Chromium, так и в Firefox.
AHA! <object>
имеет поведение безопасности, аналогичное <iframe>
: домен, протокол должен быть одинаковым для сайта и файла SVG.
EDIT2
Если вас интересует, как заставить работать векторную графику разметки для работы в Internet Explorer (-ах) без плагинов, тогда Vector Markup Language - это способ.