SVG 元素:内部还是外部?

我看到标签可以在svg标签( ref )中使用。 此外,svg标记中的元素可以通过标记之外的JavaScript访问,因为它们是DOM的一部分。 我找不到更多关于哪个更好的细节。 通常,我将所有JS代码保存在单独的文件中,并在html中包含引用。 我也可以使用针对svg元素的脚本执行相同的操作。 另外,我读过我也可以在svg标签内部给出一个外部JS文件的链接。

为了更清楚,我说有一个带有嵌入式svg标签的网页(html5)。 svg包含很少的基本形状,我需要鼠标互动。 我可以使用jQuery,但不能使用其他外部插件。 您是否建议将所有JavaScript(对于svg外部和内部的元素)保存在一个文件中,或者将svg部分保持独立。 也可以使用jQuery引用svg标签中的元素吗? 如果我这样做会效率低下吗?

在您的脚本适用于SVG本身时,无论是否使用其他上下文,都可以在SVG中放置元素(无论是使用内联代码还是通过xlink:href在另一个文件中引用)。 例如,如果您只有一个脚本化的SVG文档 ,则这是必要的。

例如,假设您有一个HTML页面,并且包含两个SVG文件。

  • 第一个SVG文件有一些通过JavaScript创建的自定义动画。 此SVG文件应直接具有自己的脚本元素。

  • 第二个SVG文件只是一个奇特的图像,您希望在单击该图像时提交HTML页面上的表单。 为此,脚本应该在您的HTML页面中,因为它与SVG和HTML表单进行对话。 这是一个类似的例子 ,其中HTML中的按钮用于控制SVG。

当您在XHTML5中内嵌SVG内容时,该行变得更模糊,而不是引用外部SVG文件。 这个SVG内容是它自己的野兽,还是它作为特定段落文本的HTML页面的一部分?

我个人倾向于将我的SVG内联到HTML中,从而将我的所有脚本保留在SVG之外。 但要么会奏效。

您可以使用xlink:href属性调用外部文件。

    

(来源: W3C )

另外,我推荐RaphaelJS ,一个允许跨浏览器矢量绘图的JavaScript库。