2015-05-08 46 views
0

我有一個HTML文件,其中包含引用SVG文件的Snap.svg(只是一個JavaScript API)動畫。Snap.svg不會在Android WebView本地渲染

window.onload = function() { 

var s = Snap("#headDiv"); 
Snap.load("emotions.svg", function(f) { 

我試圖讓這在Android的WebView在本地運行,但有趣的是,我的網頁時訪問完全只從服務器上運行:

mWebView.loadUrl("http://www.myurl.com/index.html"); 

只要我把我的網頁文件到文件夾資產

enter image description here

和訪問與

mWebView.loadUrl("file:///android_asset/index.html"); 

一切運行良好,(包括外部JavaScript文件),除了我的SVG根本不顯示。我已經嘗試了API 16和19,結果相同:服務器運行良好,本地沒有SVG顯示。這讓我懷疑我是否指的是我的文件錯誤或什麼。

編輯:我也剛剛發現該網頁在Firefox本地工作,但不是Chrome。問題可能在這裏。

+0

這是可能的侷限在於'Snap'莫名其妙。沒有可重複的樣本,很難說。 – CommonsWare

+0

@CommonsWare這似乎是這種情況。我能夠簡單地將一個SVG添加到HTML正文中,並且呈現得很好。我發現我的同一個網頁在Firefox本地工作,但不是Chrome。我相信我的問題在於此。 – Aaron

+0

'WebView'基於Chrome使用的基本引擎,因此如果您遇到Chrome問題,您可能在'WebView'中遇到類似的問題。 – CommonsWare

回答

0

發生這種情況的原因是因爲Snap.load()產生了一個AJAX請求,這在Chrome中本地不允許,而在Android WebView中本地不允許。

配售HTML中的SVG並參考其與Snap.select()是一個很好的變通,如下解釋:How to select fragments of an existing SVG using Snap.svg