svg - это графика на основе xml, и вы можете добавлять в нее сценарии Java. Я попытался получить доступ к функциям сценария, определенным в файле svg. Скрипт в моем svg выглядит примерно так:
<svg ... onload = "RunScript(evt);"...>
<script type = "text/javascript">
...
function RunScript(loadEvent) {
// Get object in my html by id
var objElement = top.document.getElementById('objid1');
if (objElement)
{
// Extend object tag object's methods
objElement.SVGsetDimension = setDimension;
...
}
function setDimention(w, h) {...}
В моем основном файле html svg встроен в тег объекта следующим образом:
<object id = "objid1" data = "mygrahic.svg" ... >
<a href = "#" onclick = "document.getElementById('objid1').SVGsetDimention(10, 10);
return false;"
...>Set new dimention</a>...
Этот отлично работает. Однако, если на файл svg xml ссылается полный URL-адрес (на другом сайте), например:
<object id = "objid1" data = "http://www.artlibrary.net/myaccount/mygrahic.svg" ... >
коды больше не работают. Похоже, что я не могу прикрепить метод, определенный в моем сценарии svg, к методу в моем основном элементе тега объекта html, или верхняя часть или документ недоступны в этом случае, или getElementById (..) просто не может найти мой элемент объекта в мой сценарий svg. Есть ли способ найти мой элемент html в svg xml script?
Не уверен, что эта проблема вызвана разными DOM, и у моих кодов сценария svg нет способа определить другой объект или элемент DOM. Было бы неплохо, если есть какое-то решение.
Firefox использую прямо сейчас. Он хорошо показывает графику SVG. Это просто проблема сценария. Думаю, причиной может быть ответ pdc.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Думаю, разгадка может быть в том, что «на другом сайте». Существуют строгие правила относительно того, когда программам JavaScript с разных сайтов разрешено общаться с обучением других. Встроенный SVG обрабатывается так же, как и документ внутри iframe.
pdc имеет это право. Браузеры прилагают все усилия, чтобы предотвратить атаки межсайтовых сценариев (XSS), и это результат. Вы не можете выполнять сценарии в документе, загруженном из другого домена или использующем другой порт или протокол. Для получения дополнительной информации вы можете увидеть: http://en.wikipedia.org/wiki/Same_origin_policy
Итак, то, что вы делаете, с точки зрения браузера, эквивалентно следующему:
<script>
function stealPassword() {
var passwordInput = document.querySelector('input[type = "password"]');
var value = passwordInput.value; // My password!
sendPasswordToServerToStealMyMoney(value);
}
</script>
<iframe src=mybank.com onload=stealPassword()></iframe>
Думаю, вы поймете, почему это нежелательно. (Хотя, вероятно, в вашей консоли ошибок должно быть предупреждение или исключение.)
По моему опыту; Ваш код верен, так что запускайте точно. Мой компьютер Windows 7, IE9, установлен Adobe Viewer. И то, и другое, если SVG Viewer, IE9 SVG нарисован, но не может запускать SVG TAG Animation, может запускать только Javascript Animation. Итак, под Windows XP, IE8, установлен Adobe SVG Viewer, тот же результат (запускается точно).
Firefox SVG не может работать (анимация SVG ecmascript) именно на моем ПК.
На какие браузеры вы ориентируетесь и тестируете? Если в этих браузерах нет встроенной поддержки SVG, чьи подключаемые модули SVG вы используете?