2014-07-19 53 views
1

我正在使用d3js創建一個圖。我也想讓用戶在他的電腦本地保存該圖。因此,我使用this question中提到的代碼的稍微更改版本來創建該圖的可下載圖片。本地保存d3js圖

所以我有以下代碼:

$("svg").attr({ version: '1.1' , xmlns:"http://www.w3.org/2000/svg"}); 

var svg = $("#chart-main").html(); var b64 = btoa(unescape(encodeURIComponent(svg)));//Base64.encode(svg); // or use btoa if supported 

// Works in recent Webkit(Chrome) 
$("body").append($("<img src='data:image/svg+xml;base64,\n"+b64+"' alt='file.svg'/>")); 


// Works in Firefox 3.6 and Webit and possibly any browser which supports the data-uri 
    $("body").append($("<a href-lang='image/svg+xml' href='data:image/svg+xml;base64,\n"+b64+"' title='file.svg'>Download</a>")); 

然而,當我按下下載鏈接我得到以下錯誤的: 此頁包含以下錯誤:

error on line 6 at column 16:
Entity 'nbsp' not defined

鏈接就像data:image/svg+xml;base64,CgkJCQkJP....CgkJCQk=

我該如何解決這個問題?

回答

1

問題是&nbsp;是一個HTML實體。

一個獨立的SVG文件,如XML格式,僅支持五個預先定義的XML實體:&amp;&quot;&apos;&lt;&gt;

但是,要表示任何其他unicode字符,可以使用基於unicode值的字符引用。非破壞性空間的代碼是&#160;。用這個來代替&nbsp;,你的SVG文件應該被驗證。

P.S.我發現FileFormat.info's character search site用於查找Unicode值。