tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
4
ZUGRIFFE
811
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von Shakie
    Shakie Shakie ist offline Mitglied Diamant
    Registriert seit
    May 2004
    Ort
    Europa
    Beiträge
    2.048
    Ich benutze für eine HTML-Seite <canvas> und um IE zu unterstützen habe ich explorercanvas eingebunden. Das funktioniert soweit sehr gut.
    Das lade ich im HTML via
    HTML-Code:
    <!--[if IE]><script src="js/excanvas.compiled.js"></script><![endif]-->
    Ich will jetzt mit JavaScript prüfen, ob ich canvas tatsächlich verwenden kann. Es gibt ja noch weitere Browser die kein Canvas können.
    Das wollte ich mit JavaScript so machen:
    Code :
    1
    
    var supported = Boolean(document.getElementById('blabla').getContext)
    wobei "blabla" ein canvas-Element ist.
    Allerdings funktioniert diese Prüfung nicht mehr, wenn ich explorercanvas geladen habe. Ich verstehe leider die Magie hinter explorercanvas nicht. supported ist im IE immer auf FALSE.
    Trotzdem liefert mir
    Code :
    1
    
    document.getElementById('blabla').getContext('2d')
    den richtigen Context, mit dem ich zeichnen kann.
    Frage:
    Wie kann ich jetzt prüfen, ob der Browser Canvas-Unterstützung hat oder nicht bzw. excanvas geladen wurde?

    Ich habe mir überlegt dem excanvas-script eine id zu geben und dann zu prüfen, ob das script-element existiert, aber dann müsste ich in meinem JavaScript immer wissen, wie ich im HTML das Element genannt habe:
    HTML-Code:
    <!--[if IE]><script id="explorercanvas" src="js/excanvas.compiled.js"></script><![endif]-->
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    var obj = document.getElementById('blabla');
    canvasSupport = Boolean(obj.getContext);
    if (!canvasSupport) {
        var test = document.getElementById('explorercanvas');
        canvasSupport = Boolean(test);
    };
    if (canvasSupport) {
        // jetzt kann ich tatsächlich mit canvas zeichnen!
    };
    Wie würdet ihr das machen?
    Geändert von Shakie (18.06.09 um 13:58 Uhr)
     
    hihi = -h²

  2. #2
    Quaese Quaese ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Feb 2004
    Beiträge
    3.451
    Hi,

    eigentlich sollte es reichen, mit getElementById das canvas-Element zu ermitteln und anschliessend in einer if-Bedingung zu prüfen, ob ein Objekt erstellt werden konnte, das die Methode getContext kennt.
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    
    <html>
    <head>
    <title>www.tutorials.de</title>
    <meta name="author" content="Quaese">
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <!--[if IE]><script src="excanvas.compiled.js" type="text/javascript"></script><![endif]-->
    <script type="text/javascript">
    function drawIt(){
      var objCanvas = document.getElementById("canvas_id");
      // Falls das Objekt unterstützt wird
      if(objCanvas.getContext){
        // ab hier nur noch Browser mit Canvas- bzw. explorercanvas-Unterstützung
      }else{
        // Sonstiger Code
      }
    }
     
    window.onload = drawIt;
    </script>
    </head>
    <body>
    <canvas id="canvas_id"></canvas>
    </body>
    </html>

    Ciao
    Quaese
     
    Vielleicht muss man manchmal vom Weg abkommen, um nicht auf der Strecke zu bleiben!
    ----
    Der "Fortsetzungsroman" auf www.leuteforum.de

    New kind to realize large scalable projects with jQuery: jQuery SDK

  3. #3
    Avatar von Shakie
    Shakie Shakie ist offline Mitglied Diamant
    Registriert seit
    May 2004
    Ort
    Europa
    Beiträge
    2.048
    Hi Quaese,

    deine Pruefung ob beim Objekt die getContext-Methode existiert habe ich ja selber schon in meinem Post erwaehnt, die hat bei mir aber nicht funktioniert. Trotzdem bin ich jetzt drauf gekommen, woran es liegt (dank deinem Post). Du hast drawIt in window.onload gepackt, waehrend ich jQuery und
    Code :
    1
    
    $(document).ready(function(){drawIt();});
    verwendet habe.
    Seltsamer Weise funktioniert der Weg ueber jQuery und $.ready() nicht, waehrend window.onload keine Probleme macht.

    Wie gesagt, das Problem besteht nur im Zusammenhang mit explorercanvas. Weiss jemand wie das Ding funktioniert? Anscheinend werden die canvas-Methoden erst zu einem spaeteren Zeitpunkt erstellt und noch nicht dann, wenn $.ready() bereits ausgefuehrt wird.

    Versteht das einer, wieso ich hier jQuery nicht verwenden kann?
     
    hihi = -h²

  4. #4
    Quaese Quaese ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Feb 2004
    Beiträge
    3.451
    Hi,

    ich kann das von dir beschriebene Phänomen nur dann beobachten, wenn ich jQuery nach dem explorercanvas-Script einbinde. Sonst funktioniert es bei mir auch im ready-Event.

    Ciao
    Quaese
     
    Vielleicht muss man manchmal vom Weg abkommen, um nicht auf der Strecke zu bleiben!
    ----
    Der "Fortsetzungsroman" auf www.leuteforum.de

    New kind to realize large scalable projects with jQuery: jQuery SDK

  5. #5
    Avatar von Shakie
    Shakie Shakie ist offline Mitglied Diamant
    Registriert seit
    May 2004
    Ort
    Europa
    Beiträge
    2.048
    Danke!
    Habe excanvas nun als letztes Script eingebunden und siehe da: alles funktioniert
     
    hihi = -h²

Ähnliche Themen

  1. Wird der UNION durch Hibernate unterstützt?
    Von moujtahid1977 im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 1
    Letzter Beitrag: 16.11.07, 06:27
  2. Frage zu Mainboard (Wird SLI unterstützt?)
    Von FaNo86 im Forum Hardware
    Antworten: 3
    Letzter Beitrag: 31.10.07, 23:06
  3. Dateityp wird nicht unterstützt ?
    Von Hippe im Forum Videoschnitt, Videotechnik & -produktion
    Antworten: 3
    Letzter Beitrag: 25.11.05, 15:41
  4. ed2k wird nicht unterstützt!?
    Von marcoX im Forum Linux & Unix
    Antworten: 3
    Letzter Beitrag: 06.03.04, 14:19
  5. URI-Format wird nicht unterstützt...?!
    Von smax im Forum .NET Archiv
    Antworten: 4
    Letzter Beitrag: 01.09.03, 15:53

Stichworte