2013-01-06 101 views
1

我想要一個SVG從.txt文件中拉出一些文本並顯示它。 這是我的代碼到目前爲止。從.txt文件中提取文本並在.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> 

</svg> 

我不明白爲什麼它不工作。

回答

1

要修復您的非功能性<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>的所有需要​​的方面,以便在必要時運行腳本。

1

如果我沒有弄錯你的代碼是相應的規範。

它看起來像tref元素不常用(至少不在Firefox 17中)。在Chrome 23中,雖然它能很好地從規範中提供示例,但它似乎不適用於外部文件中定義的文本(無論是純文本文件還是外部svg defs)。我嘗試了絕對和相對鏈接幷包含一個文件協議。

我想你將不得不插入文本使用像PHP一樣的腳本語言,如果在服務器上,否則它會很難。

更多關於此元素規格:
http://www.w3.org/TR/SVG/text.html#TRefElement
https://developer.mozilla.org/en-US/docs/SVG/Element/tref

+2

[此錯誤](https://bugzilla.mozilla.org/show_bug.cgi?id=273171)跟蹤Firefox的狀態(當前未實施)。 –

相關問題