2017-02-01 4 views
1

EDIT: Firefox scheint der einzige Browser zu sein, der dies unterstützt. Ich bin auf der Suche nach einer Lösung für Chrome.<a> Hyperlink in Svg <use>

Ich versuche, einen svg-Header zu haben, die auf mehreren Seiten einer Website wiederholt, und ich kann das erreichen mit <use>, aber das Problem ist, dass ein Hyperlink im svg (nämlich das Logo) reagiert nicht um auf Ereignisse zu klicken.

Hier ist ein vereinfachtes Snippet, das das Problem zeigt. Die linke Box mit dem integrierten Hyperlink funktioniert gut, aber wenn sie über das Tag <use> eingefügt wird, reagiert sie nicht auf einen Klick, wie mit der rechten Box zu sehen ist.

<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>

Es ist auch hier verfügbar: https://jsfiddle.net/sh8276gu

+0

Auf welchem ​​UA/Browser testen Sie das? –

+0

Ich habe in Chrome 55, Edge 40 und IE 11 auf Win10 sowie Chrome 55 auf Android 7.1.1 getestet @RobertLongson – MSbitani

+0

Soweit ich das sehe funktioniert das bei Firefox 51 OK, wenn das dann bei dir nicht so ist bitte Erklären Sie deutlicher, was Sie erwarten, dass es jetzt nicht passiert. –

Antwort

0

Da SVG XML basiert und nicht auf Basis HTML, können Sie keine normalen HTML <a>-Tag verwenden und stattdessen umfassen müssen Verbindungen mit Xlink.

Dies ist die gleiche Art von Verknüpfungsmethode, die Sie innerhalb Ihres Tags <use> angewendet haben. Der neu formatiert Code Xlink mit würde wie folgt aussehen:

<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> 

Sie können here mehr zu erfahren, wie Links in SVG lesen.

+0

Der OPs-Code funktioniert auf Firefox 51, ich habe es nicht anderswo getestet, aber vermutlich ist er auf einigen UA, die noch nicht href unterstützt (oder die Buggy-Unterstützung für href hat). –

+0

Dies ist ein alter Standard, der gemäß [MDN] (https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/xlink:href) nicht empfohlen wird. Aus Neugierde habe ich es trotzdem versucht, und es funktioniert immer noch nicht. Hat es für dich funktioniert? – MSbitani

+0

MDN ist ziemlich modern, xlink: href ist immer noch auf Safari zum Beispiel erforderlich, also würde ich vorschlagen, dass es wirklich für die Verwendung empfohlen wird und dass MDN ein bisschen voraus ist, wo es sein sollte. –