2011-01-04 6 views
1

Wir haben interne Bibliothek, die Leinwand für die Anzeige von Diagrammen in meiner Anwendung verwendet. Und Dojo als Skriptsprache. Alles ist in Ordnung, aber meine Diagramme erscheinen nicht in IE8. Ich google darüber, und festgestellt, dass es einige VML-Problem in IE8 gibt.Browser-Problem: Diagramme werden nicht auf IE8 gerendert

Ich fand dies:

var printChart = function(time, freq){ 
    if (!document.namespaces['g_vml_']) { 
      document.namespaces.add('g_vml_', 'urn:schemas-microsoft-com:vml', '#default#VML'); 
     } 

     if (!document.namespaces['g_o_']) { 
      document.namespaces.add('g_o_', 'urn:schemas-microsoft-com:office:office', '#default#VML'); 
     } 

if (freq === undefined) { 
     this.freq = "1mi"; 
    } 

    if (time === undefined) { 
     this.time = "1dy"; 
    } 
self.reload(); 
} 

Jetzt Problem, das ich habe versucht, dies in meinem DOJO-Code hinzufügen, und das ist zu schaffen. Als ich tun document.namespace bekomme ich Firebug Fehler 'document.namespaces is undefined'.

Q: Wie können wir das beheben, sind die besseren alternativen Ansätze für das gleiche, grundlegende Problem ist Browser bezogen, Diagramme werden ordnungsgemäß auf anderen Browsern aber nicht auf IE8, irgendwelche Vorschläge gerendert?

Update:

Was gibt Möglichkeiten, mit einem solchen Cross-Browser-Problem umgehen?

+0

Ist Frage klar oder es wird für einige weitere Präzisierungen benötigen? – Rachel

Antwort

0

In Bezug auf die von Ihnen erwähnten Cross-Browser-Probleme gibt es grundsätzlich zwei Möglichkeiten: browser sniffing und object detection. Browser-Sniffing soll den Browser-Anbieter und die Version erkennen. Zum Beispiel können Sie wissen, dass der Browser IE 8 oder Firefox 4.0 von navigator Objekt ist. Die Objekterkennung dient zum Testen, ob ein Objekt/eine Funktion im Browser verfügbar ist, bevor es tatsächlich verwendet wird.

Für das Problem, das Sie hier haben, können Sie die beiden Ansätze verwenden. Zum Beispiel können Sie den Browser mit dojo.isIE schnüffeln.

if (dojo.isIE == 8) { 
    //Your code to add the namespace 
} 

Oder können Sie:

if (document.namespaces) { 
    // Your code to add the namespace 
} 
Verwandte Themen