Обновление июль 2016
Теперь можно реагировать на события элементов embed
при условии, что вы встраиваете что-то из того же домена. Я создал быструю демонстрацию этого как JSFiddle . Наиболее важной частью является то, что можно получить доступ к встроенному документу через embeddingElement.<a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XUL/Property/contentDocument" rel="nofollow noreferrer">contentDocument</a>
. Оттуда можно получить доступ к элементу SVG и установить обработчики событий щелчка.
Примечание по реализации: в демонстрационной версии я добавляю обработчики событий ко всем элементам path
. По соображениям производительности вы, возможно, захотите добавить один обработчик событий в SVG, а затем использовать цель события в обработчике. Редактировать: как в этом обновленная скрипка .
Старый ответ
Быстрый поиск в Google привел меня сюда . Я думаю, что это ответ на вашу проблему, верно?
Подводя итог: здесь невозможно зафиксировать события на элементе embed
, к сожалению, единственным решением является изменение файла SVG.
Вот небольшой пример того, как встроить JavaScript в файл SVG ( JSFiddle ). Он основан на примере от IBM developerWorks.
<svg>
<script type="text/javascript">
<![CDATA[
var redVal = 0;
var greenVal = 0;
var blueVal = 0;
function changeCol(evt) {
redVal = Math.round(Math.random() * 255);
greenVal = Math.round(Math.random() * 255);
blueVal = Math.round(Math.random() * 255);
evt.target.setAttribute("fill",
"rgb(" + redVal + "," + greenVal + "," + blueVal + ")");
}
// ]]>
</script>
<circle cx="200" cy="200" r="100" fill="blue"
onclick="changeCol(evt)" />
</svg>