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

Dynamically loaded SVG doesn't seem to execute onload functions anymore

本文关键字:加载 不再 执行 函数 SVG 动态      更新时间:2023-09-26

我有一个现有的应用程序,它是使用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加载也不再执行;

<?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是可以的。

有人知道在过去几个月里这个领域发生了什么变化吗??

有人有解决办法的想法吗?

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