在IE9-11中使用jQuery更新SVG文本

pan*_*nic 2 jquery internet-explorer svg

我正在尝试使用jQuery更新SVG路径上的文本.它在Firefox和Chrome中运行良好,但在IE9和IE11中(尚未在10上测试,但可能相同)文本未更新.任何想法/解决方法?到目前为止这是我的代码:

<!DOCTYPE html>
<html>
  <head>
    <style>
      svg { background:url(_skins/cf/pics/ribbon.png); }
    </style>
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
  </head>
  <body>
    <div style="padding:20px; border:1px solid red; width:500px; height:400px;">
      <svg id="paglicaText" width="193" height="294" viewBox="0 0 193 294" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
        <defs>
          <path id="ribbonLeft" d="M 23 261 C 32 182, 44 98, 83 42"/>
        </defs>
        <!--<use xlink:href="#ribbonLeft" fill="none" stroke="red"/>-->
        <text font-family="Trebuchet MS" font-size="14" text-anchor="middle"><textPath xlink:href="#ribbonLeft" startOffset="50%" id="ribbonLeftText">Text text text</textPath></text>
      </svg>
      <script>
        $('#ribbonLeftText').html('bla bla bla');
      </script>
    </div>
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

pan*_*nic 8

我想到了:

使用textContent属性而不是更新是正确的innerHTML,所以行:

$('#ribbonLeftText').html('bla bla bla');
Run Code Online (Sandbox Code Playgroud)

变为:

$('#ribbonLeftText').prop('textContent','bla bla bla');
Run Code Online (Sandbox Code Playgroud)

它适用于所有浏览器.