Newsgroup: it.comp.lang.javascript
Titolo: libreria Bluff e excanvas su explorer

Salve a tutti,
ho fatto una piccola applicazione che genera grafici "al volo" usando
la libreria bluff (
http://bluff.jcoglan.com/
).
Funziona su firefox, su chrome, ma non su explorer 8.
Da quello che ho capito il problema è dovuto al supporto del tag
canvas. La libreria è composta da 3 file js, di cui uno, excanvas.js
dovrebbe servire proprio a questo nella visualizzazione su explorer.
Se apro la pagina in explorer il risultato è che c'è un errore in
bluff.js più precisamente l'istruzione
   this._ctx = this._canvas.getContext('2d');
in questo punto del sorgente
Bluff.Renderer = new JS.Class({
  extend: {
    WRAPPER_CLASS:  'bluff-wrapper',
    TEXT_CLASS:     'bluff-text',
    TARGET_CLASS:   'bluff-tooltip-target'
  },
  font:     'Arial, Helvetica, Verdana, sans-serif',
  gravity:  'north',
  initialize: function(canvasId) {
    this._canvas = document.getElementById(canvasId);
    this._ctx = this._canvas.getContext('2d');
  },
(non metto il numero di riga perchè ho fatto una  modifica al
sorgente; si tratta però di una modifica per scrivere la legenda con
una notazione "pseudoscientifica", ovvero 1234 diventa 1,23k e 1234567
diventa 1,23M, quindi niente a che vedere con il "motore" di
generazione del grafico stesso. In ogni caso ho provato con la
versione originale del file e non funziona lo stesso)
Potete aiutarmi per favore?

 chrome, ma non su explorer 8. 
Hai fatto quello che c'è scritto in home page di quel progetto?
"and a copy of Google’s ExCanvas to support canvas in Internet Explorer. "


sì; nel file zip da scaricare ci sono 3 js, tra cui excanvas.js. Ho
messo l'include nella pagina, come per gli altri due.

ubuntulearner ha scritto:

l'hai incluso 'prima' degli altri script?
Ciao


wrote:

sì; l'ordine di inclusione è canvas.js poi js-class.js e infine
bluff.js

excanvas ha sempre dato problemi con ie8 perch� questo ha cambiato
leggermente il motore vml (sul quale si basa excanvas) in pratica se sei
in strict mode non funzione.
usa un doctype del tipo:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
per attivare il quirks mode (con tutti i problemi sui css che comporta)
non ho un explorer 8 sottomano per fare una prova quindi � solo un
suggerimento.


Senza vedere il codice è un po' difficile, prova un esempio minimale che 
riproduca l'errore.
Sarà mica che ci sono più id con lo stesso nome?

 suggerimento.
Ho provato, non funziona lo stesso....



prova con questa pagina di esempio (un html che ho salvato in locale,
che funziona con firefox ma non con IE):
<html>
<head>
<script language="javascript" type="text/javascript"
src="excanvas.js"></script>
<script language="javascript" type="text/javascript" src="js-
class.js"></script>
<script language="javascript" type="text/javascript" src="bluff.js"></
script>
</head>
<body>
<table width="100%" border="1"><tr><td>
<div>
<canvas id="pasquale" width="400" height="300"></canvas></div>
<script type="text/javascript">
var g=new Bluff.Pie('pasquale', '400x300');
g.theme_37signals();
g.data('Mario', [1282]);
g.data('Andrea', [2308]);
g.draw();
</script>
</td></tr></table>
</body>
</html>
gli script js sono nella stessa cartella del file html


devi mettere il codice nell'onload()
<html>
<head>
<script language="javascript" type="text/javascript"
src="excanvas.js"></script>
<script language="javascript" type="text/javascript" src="js-
class.js"></script>
<script language="javascript" type="text/javascript" src="bluff.js">
</script>
<script type="text/javascript">
window.onload = function()
{
var g=new Bluff.Pie('pasquale', '400x300');
g.theme_37signals();
g.data('Mario', [1282]);
g.data('Andrea', [2308]);
g.draw();
}
</script>
</head>
<body>
<table width="100%" border="1"><tr><td>
<div>
<canvas id="pasquale" width="400" height="300"></canvas></div>
</td></tr></table>
</body>
</html>
---------------
ciao

 ciao
promemoria: pagare una birra a logicmind perchè ha risolto il
problema. :-)