2013-03-04 33 views
18

Trang của tôi đang tải hoàn toàn trong IE9, Safari, Chrome & Firefox.Lỗi IE10 d3.v3.js: Không thể lấy thuộc tính 'nguyên mẫu' của tham chiếu không xác định hoặc null

Nhưng khi nó coems ​​để IE10, nó throws lỗi: Không thể để có được tài sản 'nguyên mẫu' của tài liệu tham khảo không xác định hoặc null trong d3.v3.js tại dòng: d3_window.CSSStyleDeclaration.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); 
    }; 
    } 

Tôi không nhận được chính xác những gì đang được thực hiện ở đây.

Trong khối try mặc dù phương pháp setProperty chúng ta có thể nhìn thấy trong trình gỡ lỗi trên d3_document.createElement("div").style nó được ném lỗi như: Object không hỗ trợ tài sản hoặc phương pháp 'setProperty'

Trong khối catch nó cố gắng truy cập nguyên mẫu của cửa sổ CSSStyleDeclaration, nhưng đó là không xác định.

Bất kỳ ai đã xảy ra với cùng một vấn đề khi sử dụng d3.v3.js

+0

Có Tôi có cùng một vấn đề nhưng tôi chưa tìm thấy giải pháp. Có thể có một số việc cần làm với IE thiếu ECMA 5. Tôi gặp vấn đề với Array.map https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/map – Peter

+0

Tôi có cùng lỗi, cùng một dòng bằng cách sử dụng IE 9. Bạn đã bao giờ giải quyết vấn đề này chưa? – balazs

Trả lời

48

này có thể được cố định với một DOCTYPE:

<!DOCTYPE html> 

Và một thẻ meta:

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

Nếu không có những, IE sẽ đi vào chế độ quirks và không hiểu những gì CSSStyleDeclaration là.

-1

Dường như đây là một vấn đề được biết đến và khó có thể được cố định.

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

công việc xung quanh là để tải D3 có chọn lọc - điều này làm việc cho tôi -

// 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 
} 
1

Đã cùng một vấn đề mà sử dụng để xảy ra một cách ngẫu nhiên, sau khi một số nghiên cứu tôi kết luận rằng nó đang ngồi css hợp lệ tài sản (từ quan điểm của IE) gây ra nó, trong trường hợp của tôi:

Trường hợp cần phải là

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

Vì vậy, lời khuyên của tôi sẽ là xem xét tất cả các kiểu ghi từ, hoặc thậm chí tốt hơn - chuyển chúng sang css hoàn toàn. Sau khi sửa chữa như vậy nó sẽ làm việc như sự quyến rũ trong IE9 +

Các vấn đề liên quan