20

私のページはIE9、Safari、Chrome、Firefoxで完全に読み込まれています。

しかし、IE10に接続すると、エラーがスロー されます :d3.v3.jsの行:d3_window.CSSStyleDeclaration.prototypeで未定義 またはnull参照のプロパティ'prototype'を取得できません。

 try {
    d3_document.createElement("div").style.setProperty("opacity", 0, "");
  } catch (error) {
    var d3_style_prototype = d3_window.CSSStyleDeclaration.prototype, d3_style_setProperty = d3_style_prototype.setProperty;
    d3_style_prototype.setProperty = function(name, value, priority) {
      d3_style_setProperty.call(this, name, value + "", priority);
    };
  }

ここで何が行われているのか正確にはわかりません。

tryブロックでは、デバッガーで確認できるsetPropertyメソッドが次のようにエラーd3_document.createElement("div").styleを スローしています: オブジェクトはプロパティまたはメソッド'setProperty'をサポートしていません

catchブロックでは、ウィンドウのプロトタイプにアクセスしようとしますCSSStyleDeclarationが、それは未定義です。

d3.v3.jsを使用しているときに誰もが同じ問題で発生しました

4

3 に答える 3

51

DOCTYPEこれは:で修正できます

<!DOCTYPE html>

そしてmetaタグ:

<meta http-equiv="X-UA-Compatible" content="IE=edge" />

それらがないと、IEはクァークズモードになり、何であるかを理解できませんCSSStyleDeclaration

于 2013-08-09T16:00:26.250 に答える
1

ランダムに発生していたのと同じ問題がありました。いくつかの調査の結果、私の場合、それが原因で無効なcssプロパティ(IEの観点から)が設定されていると結論付けました。 someSvg.append('svg:text') .text(function (d) { return d.label; }) .attr('text-anchor', 'left')

あるべき場所

.attr('text-anchor', 'start')

したがって、私のアドバイスは、すべてのfrom-scritpt-stylingsを確認するか、さらに良い方法として、それらをcssに完全に移動することです。このような修正後は、IE9+の魅力のように機能するはずです。

于 2013-04-11T14:10:56.670 に答える
-1

これは既知の問題であり、修正される可能性は低いようです。

https://groups.google.com/forum/?fromgroups=#!topic/d3-js/8lQ2BCR45BM

回避策は、d3を選択的にロードすることです-これは私にとってはうまくいきます-

// load d3.js selectively
try { 
            // if this doesnt throw an error then we can load d3.js 
            // this is known to fail in IE < 8
            document.createElement("div").style.setProperty("opacity", 0, "")

            var d3Script = document.createElement( "script" )

            d3Script.src = "@Href("~/JavaScript/d3.js")"

            d3Script.onload = function (){
                // do stuff
            }

            document.getElementsByTagName("head")[0].appendChild( d3Script )
} catch( error ) {
            // upgrade your browser
}
于 2013-03-18T10:09:30.020 に答える