動的SVG要素を使用するとIE 11が「クラッシュ」する

ケネス・ムーア:

最近、会社の新しいhtmlアプリケーションにカスタムSVGアイコンコントロールを実装しました。実装されて間もなく、アプリケーションの使用時にIE 11がランダムに「クラッシュする」と弊社の品質部門が報告し始めました。

クラッシュという用語が何が起こっているのかを正確に説明しているとは思いません。アプリケーションは、要素がマウスまたはキーボードの入力を受け入れなくなり、ホバースタイルを表示するように表示が変化しない状態になります。ただし、ボタンにカーソルを合わせるとカーソル画像が適切に変化し、入力要素とスクロール可能なセクションはマウスホイールを使用してスクロールできます(ただし、マウスホイールのみ)。

アプリケーションがこの状態のときにUI応答プロファイラーを実行したところ、クライアント側のスクリプトが実行されておらず、IEのガベージコレクターしか実行されていませんでした。1週間のテストの後、ユーザーがsvg要素で生成されたアイコンをクリックしたときに、そのクリックがDOMからクリックされたsvg要素を削除する関数を起動したときにのみ、状態がトリガーされることを最終的に決定しました。

問題の説明/再現に役立つコードペンは次のとおりです:http : //codepen.io/GooeyIdeas/pen/WvpPzP

そしてレクリエーションのための最小コード:

// This is a simple *viewmodel* - JavaScript that defines the data and behavior of your UI
function AppViewModel() {
    var self = this;
    this.isLocked = ko.observable(false);
    this.toggleLock = function(){
      self.isLocked(!self.isLocked.peek())
    }
}

ko.applyBindings(new AppViewModel());
svg use{
  cursor: crosshair;
}
svg{
  border: 1px solid #eeeeee;
  cursor: default;
}
svg:hover{
  border-color: #dedede;
  background: #cecece;
}
#svg-icons{
  display: none;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>The cursor will change into a crosshair if you are hovering over the correct element.</div>
<div>
  <!-- ko if: isLocked    -->
  <svg class="ux-icon-svg" width="24" height="24"><use data-bind="click: toggleLock" xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#locked"></use></svg>
  <!-- /ko -->
  <!-- ko ifnot: isLocked -->
  <svg class="ux-icon-svg" width="24" height="24"><use data-bind="click: toggleLock" xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#unlocked"></use></svg>
  <!--/ko-->
</div>

<svg xmlns="http://www.w3.org/2000/svg" id="svg-icons">
  <symbol viewBox="0 0 24 24" id="unlocked">
    <path d="M18,9h-1V7c0-2.8-2.2-5-5-5S7,4.2,7,7h1.9c0-1.7,1.4-3.1,3.1-3.1s3.1,1.4,3.1,3.1v2H6c-1.1,0-2,0.9-2,2v9c0,1.1,0.9,2,2,2
             h12c1.1,0,2-0.9,2-2v-9C20,9.9,19.1,9,18,9z"></path>
  </symbol>
  <symbol viewBox="0 0 24 24" id="locked">
    <path d="M18,9h-1V7c0-2.8-2.2-5-5-5S7,4.2,7,7v2H6c-1.1,0-2,0.9-2,2v9c0,1.1,0.9,2,2,2h12c1.1,0,2-0.9,2-2v-9C20,9.9,19.1,9,18,9z
             M15.1,9H8.9V7c0-1.7,1.4-3.1,3.1-3.1s3.1,1.4,3.1,3.1V9z"></path>
  </symbol>
</svg>

誰かが以前にこれに遭遇したことがありますか?SVGの「use」要素を引き続き使用できる回避策を知っている人はいますか?何かを明確にする必要がありますか?

*編集このエラーを再現できない人もいるようです。他の誰かがこのエラーを再現できるかどうか知りたいのですが、再現できない場合は、どのバージョンのウィンドウを実行していますか?

**編集このバグはWindows 8 PCには存在しないようです。svg use要素にカーソルを合わせるとカーソルが十字線に変わるCSSをサンプルに確実に追加しました。これは、クラッシュをトリガーするためにクリックする必要がある要素だからです。

ケネス・ムーア:

この投稿ではトラフィックが少ないため、解決策を投稿すると思います。このCSSルールを追加しました。

svg use {
  pointer-events: none;
}

これは理想的ではありませんが、IE 11がロックアップするのを防ぎます。これが、このプロジェクトでサポートするために必要なことのすべてです。ただし、この投稿が今後このバグに遭遇し、IEの古いバージョンをサポートする必要がある可能性のある他のユーザーを支援したいと思います。誰かが時間をかけてより堅牢なソリューションを考え出してくれるなら、私はそれをこの投稿への答えとして受け入れます。

また、この問題についてマイクロソフトにバグレポートを提出する必要がありますか?

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

NSInvalidUnarchiveOperationExceptionが原因でiOS11 WKWebviewがクラッシュする

分類Dev

KVO時にiOS11AVPlayerがクラッシュする

分類Dev

Directx11-DeviceContext :: ClearRenderTargetViewがクラッシュする

分類Dev

unUserNotificationCenterを使用するとiOS11がbundleProxy!= nilエラーでクラッシュする

分類Dev

Hello Worldプロジェクトでcanvasを使用すると、Xcode11が毎回クラッシュする

分類Dev

仮想マシンで起動するとXcode11ベータがクラッシュする

分類Dev

印刷ダイアログなしで印刷するとIE11がクラッシュする

分類Dev

クラッシュするIE11をデバッグする

分類Dev

iOSが動的UIButtonをクリックするとクラッシュする

分類Dev

updateContext操作を使用するとOrionContextBrokerがクラッシュする

分類Dev

BoostとC ++ 11でビルドプロセスがクラッシュする

分類Dev

DIVを非表示にするとIE9がクラッシュする

分類Dev

ThreeJS:IE11がRender()でクラッシュします。

分類Dev

Boost :: asio :: ip :: tcp :: socketにアクセスするとC ++ 11スレッドがクラッシュする

分類Dev

カメラを起動するとAndroidがクラッシュする

分類Dev

Xcode 11が実行中のiPhone 13.1アプリでクラッシュする

分類Dev

ログイン時にX11がクラッシュする(Arch ARM)

分類Dev

Xcode11とmacOSCatalina(zsh)を使用してコンパイルした後にSFMLがクラッシュする

分類Dev

アプリの終了中にPushKitがプッシュを受信するとIOS11アプリケーションがクラッシュする

分類Dev

UIViewControllerクラスで「view」を使用するとSwiftPlaygroundがクラッシュする

分類Dev

Ubuntuがクラッシュする

分類Dev

Kotlin:getFusedLocationProviderClientがクラッシュする

分類Dev

GeoAPIContextがクラッシュする

分類Dev

NSString containsStringがクラッシュする

分類Dev

Webviewloadurlがクラッシュする

分類Dev

Webviewloadurlがクラッシュする

分類Dev

LLSimpleCamera:AVAssetWriterInputappendSampleBufferがクラッシュする

分類Dev

AndroidWebRTCがクラッシュする

分類Dev

GetAdaptersInfoがクラッシュする

Related 関連記事

  1. 1

    NSInvalidUnarchiveOperationExceptionが原因でiOS11 WKWebviewがクラッシュする

  2. 2

    KVO時にiOS11AVPlayerがクラッシュする

  3. 3

    Directx11-DeviceContext :: ClearRenderTargetViewがクラッシュする

  4. 4

    unUserNotificationCenterを使用するとiOS11がbundleProxy!= nilエラーでクラッシュする

  5. 5

    Hello Worldプロジェクトでcanvasを使用すると、Xcode11が毎回クラッシュする

  6. 6

    仮想マシンで起動するとXcode11ベータがクラッシュする

  7. 7

    印刷ダイアログなしで印刷するとIE11がクラッシュする

  8. 8

    クラッシュするIE11をデバッグする

  9. 9

    iOSが動的UIButtonをクリックするとクラッシュする

  10. 10

    updateContext操作を使用するとOrionContextBrokerがクラッシュする

  11. 11

    BoostとC ++ 11でビルドプロセスがクラッシュする

  12. 12

    DIVを非表示にするとIE9がクラッシュする

  13. 13

    ThreeJS:IE11がRender()でクラッシュします。

  14. 14

    Boost :: asio :: ip :: tcp :: socketにアクセスするとC ++ 11スレッドがクラッシュする

  15. 15

    カメラを起動するとAndroidがクラッシュする

  16. 16

    Xcode 11が実行中のiPhone 13.1アプリでクラッシュする

  17. 17

    ログイン時にX11がクラッシュする(Arch ARM)

  18. 18

    Xcode11とmacOSCatalina(zsh)を使用してコンパイルした後にSFMLがクラッシュする

  19. 19

    アプリの終了中にPushKitがプッシュを受信するとIOS11アプリケーションがクラッシュする

  20. 20

    UIViewControllerクラスで「view」を使用するとSwiftPlaygroundがクラッシュする

  21. 21

    Ubuntuがクラッシュする

  22. 22

    Kotlin:getFusedLocationProviderClientがクラッシュする

  23. 23

    GeoAPIContextがクラッシュする

  24. 24

    NSString containsStringがクラッシュする

  25. 25

    Webviewloadurlがクラッシュする

  26. 26

    Webviewloadurlがクラッシュする

  27. 27

    LLSimpleCamera:AVAssetWriterInputappendSampleBufferがクラッシュする

  28. 28

    AndroidWebRTCがクラッシュする

  29. 29

    GetAdaptersInfoがクラッシュする

ホットタグ

アーカイブ