2010-01-18 2 views
10

Я не хочу добавлять ссылку на svg (что невозможно, потому что svg не предоставляется мной), но вы хотите добавить ссылку, такую ​​как <a href=""><img src="foo.svg"/></a>. Только на этот раз это не img, а object (поэтому я могу включить svg).Как вставить объект SVG в HTML со ссылками?

Он работает с некоторыми браузерами, но, например, не с firefox. Какова идея по умолчанию, как сделать что-то подобное?

ответ

11

В Firefox <object> захватывает все клики и не позволяет им «пузыриться» из документа SVG. Разумным обходным решением является обложка SVG с помощью другого элемента, который сначала получает щелчок.

К счастью, это можно сделать с помощью чистого CSS:

a {position:relative; display:inline-block;} 
a:after {content:""; position:absolute; top:0; left:0; bottom:0; right:0;} 

Вы можете добавить :-moz-any-link псевдо-класс в селекторе, чтобы сделать его Gecko только.

3

Поместите ссылку внутри файла SVG вместо этого, например:

<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> 
<a xlink:href=""> 
    ... 
</a> 
</svg> 
+0

... и если файл размещен на том же домене, и вы действительно хотите, чтобы избежать изменения файла на сервере, вы можете попробовать что-то вроде этого: вар aElm = yourObjectElm.contentDocument.documentElement.createElementNS (» http://www.w3.org/2000/svg "," a "); aElm.href.baseVal = "http://your.link.here.com"; // ... присоединить всех дочерних элементов вашего объектаObjectElm.contentDocument.documentElement к aElm ... // yourObjectElm.contentDocument.documentElement.appendChild (aElm); –

+0

Javascript невозможен, и я не могу изменить файл – user253104

0

С svgweb вы можете вставлять произвольный SVG кросс-браузер и изменить его с помощью обычных методов DOM. Сюда входит присоединение прослушивателей событий к любой части SVG.

svgweb страница:
http://code.google.com/p/svgweb/

svgweb Quickstart (также обсуждает добавление слушателей событий):
http://codinginparadise.org/projects/svgweb/docs/QuickStart.html

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

+0

Javascript невозможен – user253104

Смежные вопросы