2017-02-01 7 views
1

EDIT: Firefox, кажется, единственный браузер, который поддерживает это. Я ищет решение для Chrome.<a> гиперссылка в svg <use>

Я пытаюсь иметь заголовок SVG, который повторяется на нескольких страницах веб-сайта, и я могу добиться того, что с <use>, но проблема в том, что гиперссылкой в ​​SVG (а именно логотип) не отвечает для кликов событий.

Вот упрощенный фрагмент, который показывает проблему. Левый флажок с встроенной гиперссылкой работает нормально, но когда он включен через тег <use>, он не реагирует на щелчок, как можно видеть в правом окне.

<svg width="300" height="100"> 
 
    <svg id="link"> 
 
    <a href="https://google.com"> 
 
     <rect width="100" height="100" /> 
 
    </a> 
 
    </svg> 
 
    <use x="200" xlink:href="#link"></use> 
 
</svg>

Он также доступен здесь: https://jsfiddle.net/sh8276gu

+0

На каком UA/браузере вы проверяете это? –

+0

Я тестировал в Chrome 55, Edge 40 и IE 11 на Win10, а также Chrome 55 на Android 7.1.1. @RobertLongson – MSbitani

+0

Насколько я могу видеть, это работает нормально на Firefox 51, если это не так для вас, пожалуйста, более четко объясните, что вы ожидаете, что не происходит сейчас. –

ответ

0

Поскольку SVG является XML на основе, а не HTML основе, вы не можете использовать обычный HTML <a> тег и вместо этого должны включать ссылки с использованием Xlink.

Это тот же метод связывания, который вы применили в теге <use>. Переформатировать код с помощью XLink будет выглядеть следующим образом:

<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="300" height="100"> 
    <svg id="link"> 
    <a xlink:href="https://google.com"> 
     <rect width="100" height="100" /> 
    </a> 
    </svg> 
    <use x="200" xlink:href="#link"></use> 
</svg> 

Вы можете узнать больше о включении ссылок в SVG here.

+0

Код OPs работает на Firefox 51, я не тестировал его в другом месте, но, предположительно, он находится на каком-то UA, который еще не поддерживает href (или у него есть некорректная поддержка href). –

+0

Это старый стандарт, который не рекомендуется использовать в соответствии с [MDN] (https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/xlink:href). Из любопытства я все равно попробовал, и он все равно не работает. Это сработало для вас? – MSbitani

+0

MDN довольно режут на этом, xlink: href по-прежнему требуется в Safari, например, поэтому я бы предположил, что это действительно рекомендуется для использования, и что MDN немного опережает то, что должно быть. –