嵌入 SVG 加载事件不起作用

Embed SVG onload event does not work

本文关键字:不起作用 事件 加载 SVG 嵌入      更新时间:2023-09-26

我有角度指令:

   <div>
     <embed ng-src="{{url}}" id="map" type="image/svg+xml/>
   </div>

我需要在加载 svg 时执行代码,因此,我在 dom ready 上添加了加载操作侦听器

    // on dom ready
    $timeout(function(){
      $("#map")[0].onload = onSVGReady;
    });

这里 map 是嵌入元素的 ID,osSVGReady 是动作处理程序。

此方法在第一次加载 svg 时有效,当 url 更改时,不执行 onSVGReady 处理程序。

顺便说一句,当我将加载处理程序直接添加到元素时,它可以工作:

<embed ng-src="{{url}}" id="map" type="image/svg+xml" onload="console.log('Yes')"/>

我做错了什么?

感谢。

我找到了另一种解决方案:使用对象而不是嵌入:

<object id="map" type="image/svg+xml" ng-attr-data="{{url}}">