要修復您的非功能性<tref>
元素,你可以添加腳本是通過Ajax加載所需的文本文件中的SVG的結尾:
<svg width="10cm" height="3cm" viewBox="0 0 1000 300" version="1.1"
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<text x="100" y="200" font-size="45" fill="red" >
<tref xlink:href="sensors.txt"/>
</text>
<script type="text/javascript">
var trefs = document.getElementsByTagName("tref");
for (var i=0; trefs[i]; i++) {
var xhr = new XMLHttpRequest();
xhr.open("GET",trefs[i].getAttributeNS("http://www.w3.org/1999/xlink","href"),false);
xhr.send("");
trefs[i].parentNode.replaceChild(document.createTextNode(xhr.responseText),trefs[i]);
}
</script>
</svg>
當然,這隻適用於引用文本文件,就像你一樣。這可以在風格上進行改進,並且如果需要的話,還可以通過ID引用文本,例如xlink:href="#textId'
,即使對於來自外部文件的引用ID(例如xlink:href="other.svg#textId"
)也是如此。
我不確定是否能夠明智地嗅到瀏覽器是否已經支持<tref>
的所有需要的方面,以便在必要時運行腳本。
[此錯誤](https://bugzilla.mozilla.org/show_bug.cgi?id=273171)跟蹤Firefox的狀態(當前未實施)。 –