动态加载的SVG似乎不再执行onload函数

时间:2014-04-18 09:56:25

标签: javascript html5 google-chrome gwt svg

我有一个使用GWT作为"单页面应用程序编写的现有应用程序"。可能发生的许多事情之一是用户提供的SVG被加载到页面中以供查看。用户可以(从SVG)调用主应用程序中的函数来检索或设置值。

从最近(不确定确切时间)开始,当从GWT加载SVG时,Chrome不再执行 onload 。但是旧的Chrome版本确实如此,Opera和许多(全部?)版本的Firefox都可以。根据用户的说法,IE10 / 11也按预期工作。

Chrome中似乎有些变化,而且最近......

加载SVG看起来像;

import com.google.gwt.dom.client.Element;
import com.google.gwt.user.client.ui.HTMLPanel;

@UiField
HTMLPanel svgContainer;

@Override
public void setSvgContent( String svgContent )
{
    clearView();
    Element containerElement = svgContainer.getElement();
    containerElement.setInnerHTML( svgContent );

即便是最简单的SVG onload也不再执行了;

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg xmlns="http://www.w3.org/2000/svg" width="744.09448819" height="1052.3622047" version="1.1" onload="alert('Niclas1')">
    <text style="font-size:40px" x="150" y="150" 
          onload="alert('Niclas2')"
          onclick="alert('Niclas3')">
        <tspan x="150" y="150">##0.0°C</tspan>
    </text>
</svg>

简单来说,没有 onload 被执行,但 onclick 没问题。

有谁知道过去几个月在这个空间发生的任何变化?

有没有人有任何解决方法的想法?

1 个答案:

答案 0 :(得分:1)

Chrome 34与svg存在严重错误问题,您的问题可能与以下问题有关: https://code.google.com/p/chromium/issues/detail?id=362354 https://code.google.com/p/chromium/issues/detail?id=361576