2013-08-22 29 views
5

Tôi đang làm việc để hiện đại hóa ứng dụng web thực sự cũ này để làm việc trên các trình duyệt hiện đại và tôi đã gặp vấn đề với IE 10. Cuối cùng tôi đến một điểm mà tôi phải chuyển đổi một tài liệu XML thành một chuỗi:javascript: xml thành chuỗi trong IE 10

function xmlToString(xmlElement) 
{ 
    if (document.evaluate) 
    { 
      var serializer = new XMLSerializer() 
      var strXml = serializer.serializeToString(xmlElement) 
    } 
    else 
      var strXml = xmlElement.xml 
} 

Khối đầu tiên nếu dùng cho Firefox và Chrome; hoạt động tốt. Các dòng sau khi khác là dành cho Internet Explorer. Nó hoạt động tốt trên 8 và 9 nhưng không phải 10 (và nó phải hoạt động trên cả 3). Từ những gì tôi đã tập hợp, điều này là bởi vì IE 10 di chuyển ra khỏi những cách trước đây của microsoft xử lý xml để một cái gì đó gần gũi hơn với tiêu chuẩn. Tuy nhiên, tôi chưa tìm thấy sự thay thế cho thuộc tính .xml trong IE 10 chưa?

Có ai biết cách tôi có thể chuyển đổi tài liệu XML thành chuỗi trong IE 10 không?

Cảm ơn.

EDIT: Vì vậy, nguyên nhân thực sự của vấn đề ở đây là trong IE 10 giá trị của xmlElement.xml là không xác định. Hơn nữa nó không chuyển đổi tài liệu xml thành một chuỗi; thuộc tính đó đã là một biểu diễn chuỗi của tài liệu xml. Vẫn cần phải tìm ra cách để làm điều này trong IE 10 mặc dù.

EDIT 2: Vì vậy, tôi đã tìm ra câu trả lời, nhưng dường như im không được phép để thực sự trả lời câu hỏi của riêng tôi trong vài giờ, vì vậy bệnh chỉ cần sao chép nó vào đây để bây giờ:

AAAnd tất nhiên, khoảng 5 phút sau khi Tôi đăng bài này cuối cùng tôi đã tìm ra các câu hỏi phù hợp để yêu cầu Google ... -_-

Dù sao, tắt IE 9 trở lên hỗ trợ XMLSerializer, vì vậy việc tìm ra chức năng đó mà không phải xa lánh bất kỳ trình duyệt cần thiết nào. This page cho tôi thấy một cách tuyệt vời để phát hiện các chức năng javascript có mọi thứ hoạt động.

Đây là mã cuối cùng, nó hoạt động trên IE 8 và 10 cũng như Chrome mới nhất và Firefox:

function xmlToString(xmlElement) 
{ 
    if (typeof XMLSerializer == 'function') 
    { 
     var serializer = new XMLSerializer() 
     var strXml = serializer.serializeToString(xmlElement) 
    } 
    else 
     var strXml = xmlElement.xml 
} 

Dòng cuối cùng vẫn phải có mặt ở đó để làm việc này trên IE 8

Trả lời

0

Hãy thử làm điều đó bằng cách sử dụng DOMParser.

function xmlToString(xmlElement) 
{ 
    if (document.evaluate) 
    { 
     var parser = new DOMParser(); 
     var strXml = parser.parseFromString(xmlElement, "text/xml"); 
    } 
    else 
     var strXml = xmlElement.xml 
} 

kiểm tra bài viết này về DOMParser and XMLSerializer

Đây là một demo

0

Đơn giản chỉ cần để cho IE10 sử dụng khối đầu tiên (đã được sử dụng bởi Firefox và Chrome)

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