如何在嵌入式SVG文件中打开链接在主窗口中打开,而不是在单独的对象中打开

moj*_*nes 34 html svg

我有一个包含URL链接的SVG文件(由Graphviz生成).我希望这些链接可以点击.首先我试过了

<img src="path/to/my.svg"/>
Run Code Online (Sandbox Code Playgroud)

它显示图像正常,但链接不可点击.更改为对象:

 <object data="/path/to/my.svg" type="image/svg+xml">
Run Code Online (Sandbox Code Playgroud)

使链接可单击,但当用户单击它们时,新页面将在对象内打开.有什么方法可以在主窗口中打开链接吗?

这是使用firefox 5.0,但如果有任何跨浏览器的差异你知道我会很感激警告!

Spa*_*hut 43

首先,如果你将SVG嵌入<img>,浏览器将不会打开链接,以及它们不会在里面运行脚本<img>,因为,你嵌入了一个图像,很可能你的图像可能出现在一个内部<a>,你不能放置链接内部链接.

要在新选项卡中打开链接,您可以使用target属性(如HTML)或xlink特定xlink:show属性(值)new.SVG规范说明如下:

提供[xlink:show]属性是为了向后兼容SVG 1.1.它为支持XLink的处理器提供文档.在发生冲突的情况下,目标属性具有优先级,因为它可以表达更宽范围的值.

并且target属性的值可以是:

  • _更换
  • _自
  • _parent
  • _最佳
  • _空白

因此,在您的SVG中,您需要编写如下:

<a xlink:href="http://example.com" target="_blank">[...]</a>
Run Code Online (Sandbox Code Playgroud)

但目前所有浏览器都能够显示SVG xlink:showtarget属性(我还没有在IE9中测试过).

  • 完美,非常感谢这两个答案.在我的Graphviz HTML标签中添加`target ='_ top'`可以得到我想要的结果. (7认同)
  • 他想在包含窗口中打开它.我想你想要"_parent"或"_top". (4认同)
  • 请注意,如在发布的示例中,它必须是'target =',而不是'xlink:target ='(即使您想要'xlink:href =').这让我有点沮丧. (2认同)
  • @cazort 我不知道您问题的确切答案,但是根据您嵌入 SVG 的方式,您可以将 `&lt;base target="_blank" /&gt;` 添加到您的 `&lt;head&gt;` 元素和文档中的所有链接将在新选项卡中打开。如果您将 SVG 嵌入 HTML iframe 中,应该会有所帮助。 (2认同)