我知道有很多方法可以在HTML中使用SVG sprites。我更倾向于对这个日期已经使用类似Cross domain svg sprite
<div class="container">
<svg class="icon">
<title>Icon Title</title>
<use xlink:href="/svg/sprite.svg#icon"/>
</svg>
</div>
不过,现在我想从一个子域加载精灵,就像这样:
<div class="container">
<svg class="icon">
<title>Icon Title</title>
<use xlink:href="https://sub.domain.com/svg/sprite-home.svg#icon"/>
</svg>
</div>
不幸的是,这并不能作为工作文件未被提取。我也尝试过<object>
,但这似乎也不起作用。
到目前为止,我只能够使用
<?php include_once("https://sub.domain.com/svg/sprite.svg"); ?>
这是确定为速战速决,因为这不涉及太多的重构。但是,这也意味着HTML变得臃肿。
使用<use>
方法,精灵将被缓存。但是对于include
方法,精灵不会被缓存,只会被嵌入,所以它远非理想。
有没有人使用任何替代PHP的include方法与跨域请求和浏览器缓存兼容?
子域访问应该与Firefox上的子域一起工作。不过,我认为你在Chrome/Safari/IE上可能会遇到问题。有一个测试套件测试用例:http://www.w3.org/Graphics/SVG/Test/20110816/svg/struct-use-05-b.svg –
为了让事情变得更糟,Firefox也不适合我。我一直在寻找并找到了JS的解决方案。我会在下面发布 – cortopy