2009-06-02 11 views
17

Ero abituato a lavorare su un plugin jQuery chiamato "BeautyTips" e funzionava perfettamente. Ma, da quando ho installato IE 8, questo plugin smette di funzionare perché ha bisogno di Excanvas per far disegnare i vettori, le immagini ecc.È possibile far funzionare Excanvas in IE 8?

Ho provato a scaricare la versione più recente di Excanvas ma non funziona affatto. ..

+32

Mi viene ancora in mente che Microsoft abbia rilevato IE8 senza Canvas nativo. – Nosredna

risposta

10

Prova aggiungendo l'elemento canvas al documento prima di inizializzare utilizzando excanvas:

var foo = document.getElementById("targetElementID"); 
var canvas = document.createElement('canvas'); 
canvas.setAttribute("width", 620); 
canvas.setAttribute("height", 310); 
canvas.setAttribute("class", "mapping"); 
foo.appendChild(canvas); 
canvas = G_vmlCanvasManager.initElement(canvas); 
16

La nuova modalità 'standard' di IE8 disattiva alcune funzioni non standard. Tra questi VML, che viene utilizzato da excanvas. Ho appena impostato la modalità "standard" di IE7, quindi funziona ancora.

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

Frustrante, ma non conosco alcun vantaggio presentato da IE8.

+0

Questo è abbastanza buono. Quando ho dovuto usare Canvas su IE8 l'ho invece buttato in modalità "quirks", che ha fatto schifo. – Nosredna

+0

lo usava all'inizio, ma continuava ad avere molti problemi su altre parti della pagina. impostando manualmente la compatibilità IE7 più volte, quindi ho continuato a cercare su Google fino a quando ho trovato questo elemento. in teoria il futuro IE (oh Dio, no!) ti permetterà di scegliere tra una vasta gamma di "standard", dalle precedenti versioni – Javier

+0

mmm, l'ultima versione sembra funzionare solo con la modalità di compatibilità, anche per me – Peanuts

2

Sei sicuro di avere la versione più recente di excanvas.js installata? (pubblicato nel marzo 2009, ospitato nella nuova pagina del progetto Google Code)

Ho utilizzato il plug-in Beauty Tips in IE8 e AFAIK ha funzionato in modalità nativa IE8.

+0

So che c'erano nuovi excanvas. Grazie. – Nosredna

1

L'ultima versione del plugin bt risolve questo problema per me.

+0

@jeff, ho provato ad usare quella versione, ma non ha funzionato per me. Ho dovuto fare altre cose per farlo funzionare! – AndreMiranda

+0

Sto usando la versione più recente ma non funziona neanche, ho cancellato la mia cache ma ancora niente. Qualche idea ? – Peanuts

14

Sì, ho avuto excanvas che funzionano in modalità standard IE8 (testato solo per l'utilizzo richiesto). Nella funzione CanvasRenderingContext2D_ ho commentato la linea:

//el.style.overflow = 'hidden';//fix IE8

La larghezza e l'altezza dell'oggetto nodo el stata 0PX da 0px, quindi non impostando l'overflow su nascosto realizzato l'elemento reso visibile.

Ho cambiato l'ordine della creazione del canvasPieTimer un po ', per ottenere il risultato richiesto. Spero che questo sia utile.

+0

Sembra che questo potrebbe essere il problema. Disattivare l'overflow per l'elemento canvas che stavo usando ha risolto il problema durante il debug. – Ian

+0

+1 Vorrei votare di più !! Mi ha salvato un enorme mal di testa in modalità compatibilità !! –

+0

Non è necessario disattivare la modalità standard: sei una leggenda! – bart

0

aggiunta di un tag canvas come una stringa di codice HTML con jQuery non funziona con la nuova versione di excanvas. Devi prima usare document.createElement ('canvas').

0

se qualcuno ha ancora questo problema: Beauty Tips versione 0.9.5 risolve questo problema. se avete a utilizzare la versione precedente (come faccio io, come la nuova versione ha introdotto un problema di consigli essere chiuso prematuramente nella mia pagina), è necessario sostituire la linea 530 con queste righe:

var canvas = document.createElement('canvas'); 
$(canvas).attr('width', (numb($text.btOuterWidth(true)) + opts.strokeWidth*2)).attr('height', (numb($text.outerHeight(true)) + opts.strokeWidth*2)).appendTo($box).css({position: 'absolute', top: $text.btPosition().top, left: $text.btPosition().left, zIndex: opts.boxzIndex}); 

Speranza che aiuta .

Problemi correlati