【问题标题】:Snap.svg won't render locally in Android WebViewSnap.svg 不会在 Android WebView 中本地呈现
【发布时间】:2015-07-19 15:33:02
【问题描述】:

我有一个 HTML 文件,其中包含引用 SVG 文件的 Snap.svg(只是一个 Javascript API)动画。

window.onload = function () {

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

我试图让它在 Android WebView 中本地运行,但有趣的是,我的网页仅在通过以下方式访问时才能从服务器完美运行:

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

我将网页文件放入资产文件夹后

和访问

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

一切运行良好,(包括外部 Javascript 文件)除了我的 SVG 根本不显示。我尝试过使用 API 16 和 19,结果相同:从服务器运行良好,本地没有 SVG 显示。这让我想知道我是否指错了我的文件或其他什么。

编辑:我还刚刚发现该网页在 Firefox 本地工作,但不是 Chrome。问题可能就在这里。

【问题讨论】:

  • 可能限制在Snap 中。没有可重复的样本,很难说。
  • @CommonsWare 这似乎是这种情况。我能够简单地将 SVG 添加到 HTML 正文中,并且渲染得很好。我刚刚发现我的同一个网页在 Firefox 中本地工作,但不是 Chrome。我相信我的问题就在这里。
  • WebView 与 Chrome 使用的基本引擎相同,因此如果您遇到 Chrome 问题,WebView 中可能会遇到类似问题。

标签: javascript android svg webview


【解决方案1】:

发生这种情况的原因是因为 Snap.load() 发出 AJAX 请求,这在 Chrome 本地是不允许的,而在 Android WebView 本地又是不允许的。

将 SVG 放在 HTML 中并使用 Snap.select() 引用它是一种很好的解决方法,如下所述:How to select fragments of an existing SVG using Snap.svg

【讨论】:

    猜你喜欢
    • 2015-11-22
    • 1970-01-01
    • 2021-10-20
    • 2013-03-13
    • 2018-06-23
    • 2020-01-16
    • 2016-08-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多