Wie erkennen Sie Unterstützung für VML oder SVG in einem Browser?
Schreibe ich etwas von javascript und brauche zu wählen zwischen SVG oder VML (oder beides, oder etwas anderes, es ist eine seltsame Welt).
Während ich wissen, dass jetzt, dass nur der IE unterstützt, VML, ich würde viel eher erkennen Funktionen als Plattform.
SVG scheint haben ein paar Eigenschaften, die Sie gehen können für: Fenster.SVGAngle zum Beispiel.
Ist dies der beste Weg, um zu überprüfen, für SVG-support?
Gibt es eine Entsprechung für VML-Grafiken?
Unfortuntaly - im firefox kann ich ganz glücklich, alles tun, die rendering in VML-ohne Fehlermeldung - einfach nichts passiert auf dem Bildschirm. Es ist ziemlich schwer zu erkennen, dass die situation von einem Skript.
InformationsquelleAutor der Frage Jim T | 2009-03-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Für VML-Erkennung, hier ist, was google maps funktioniert (Suche nach "
function Xd
"):Ich sehe, was du meinst über FF: es kann beliebige Elemente erstellt werden, einschließlich der vml-Elemente (
<v:shape>
). Wie es aussieht ist es der test für die Nähe Attributdie bestimmen können, ob das erstellte element ist wirklich interpretiert, als vml-Objekt.Sich für SVG-Erkennung funktioniert gut:
InformationsquelleAutor der Antwort Crescent Fresh
Ich würde vorschlagen, ein zwicken, um crescentfresh Antwort - Nutzung
eher als
erkennen SVG. WebKit ist derzeit sehr wählerisch über reporting-Funktionen, und gibt false zurück, für
feature#Shape
trotz relativ solide SVG-Unterstützung. Diefeature#BasicStructure
alternative wird vorgeschlagen, in den Kommentaren zu https://bugs.webkit.org/show_bug.cgi?id=17400 und gibt mir die Antworten, die ich erwartet auf Firefox/Opera/Safari/Chrome (true) und IE (false).Beachten Sie, dass die
implementation.hasFeature
Ansatz ignoriert die Unterstützung durch plugins, also, wenn Sie überprüfen möchten, z.B. den Adobe SVG-Viewer plugin für den IE, die Sie tun müssen, getrennt. Ich könnte mir vorstellen, das gleiche gilt für das RENESIS-plugin, aber noch nicht überprüft.InformationsquelleAutor der Antwort mrec
Den SVG-check hat nicht funktioniert bei mir im Chrome, also schaute ich, was die Modernizer-Bibliothek hat in Ihrer Prüfung (https://github.com/Modernizr/Modernizr/blob/master/modernizr.js).
Basierend auf Ihren code, das ist was für mich gearbeitet:
InformationsquelleAutor der Antwort Pamela Fox
Möchten Sie vielleicht überspringen Sie diese und verwenden Sie eine JS-Bibliothek, die Ihnen erlaubt, zu tun Vektor-Zeichenprogramm cross-browser, wenn das die Absicht. Die Bibliothek wird dann damit umgehen, die Ausgabe im SVG-falls unterstützt, oder fallback auf canvas, VML, flash, silverlight, etc, wenn nicht, je nachdem, was verfügbar ist.
Beispiele von Bibliotheken, die dies tun, sind in keiner bestimmten Reihenfolge:
InformationsquelleAutor der Antwort Duncan Lock
Funktioniert, wenn Sie davon ausgehen, dass nicht-SVG-Browser sind IE5.5 oder besser und können die Unterstützung von VML-Grafiken.
Getestet auf IE6, Firefox 8, Chrome 14.0.
Raphael ist sehr cool, aber es unterstützt nicht das Konzept von Gruppen, die begrenzen kann, je nachdem, was Sie tun.
Dmitry wird wahrscheinlich Flamme für mich so sagen, obwohl.
InformationsquelleAutor der Antwort Keith McConnell
Möchten Sie vielleicht check out http://www.modernizr.com/docs/#features-misc als es enthält Unterstützung für die eigentliche Erkennung von SVG-Fähigkeit im Gegensatz zu user-agent-sniffing leicht beschädigt.
InformationsquelleAutor der Antwort Norman H
Den SVG-check hat nicht funktioniert in Chrome, denn es gibt in der version 1.0. Sollte diese Arbeit besser:
InformationsquelleAutor der Antwort Alex_S
Auf der anderen Seite...
Wenn Sie wissen wollen, bevor Sie dienen der Seite:
Kratzen diese Seite:
http://caniuse.com/#cats=SVG&Status=rec&nodetails=1
Für die eingehende browser/user-agent.
Haftungsausschluss:
Ich hab noch nicht umgesetzt.
Als ich mir erhoffe caniuse.com die Veröffentlichung einer api zu arbeiten.
MarkT
InformationsquelleAutor der Antwort MarkT