2012-08-11 14 views
5

Sto provando a caricare uno script dardo in modo dinamico usando il dardo. Sto usando qualcosa di simile:Carica dinamicamente uno script dardo usando il dardo

test.html:

... 
<script src="http://dart.googlecode.com/svn/branches/bleeding_edge/dart/client/dart.js"></script> 
<script type="application/dart" src="test.dart"></script> 
... 

test.dart:

#import('dart:html'); 
main() { 
    var script = new ScriptElement(); 
    script.type = 'application/dart'; 
    script.src = 'helloworld.dart'; 
    document.body.elements.add(script); 
} 

Non funziona. Tuttavia, se lo stesso codice inline nel file HTML, funziona benissimo:

test.html:

... 
<script src="http://dart.googlecode.com/svn/branches/bleeding_edge/dart/client/dart.js"></script> 
<script type="application/dart"> 
#import('dart:html'); 
main() { 
    var script = new ScriptElement(); 
    script.type = 'application/dart'; 
    script.src = 'helloworld.dart'; 
    document.body.elements.add(script); 
} 
</script> 
... 

Perché succede questo?

+0

Sembra un insetto. Forse dovresti aggiungere un problema su [dartbug] (http://www.dartbug.com) –

+0

Sono d'accordo. Attualmente Dart non dovrebbe essere caricabile tramite ScriptElement() (questo per caricare javascript e anche che l'inter-comunicazione è molto in alto nell'aria). Attualmente il modo principale per caricare il codice dardo è con Isolate.spawnURI() –

+0

@MattB: ho visto che è possibile inserire il codice dardo in linea: http://www.dartlang.org/articles/embedding-in-html/ e funziona ! –

risposta

1

Questo era un bug in Dart. Ecco un collegamento allo bug report.

+0

Sembra che gli isolati siano l'unico modo supportato per caricare dinamicamente il codice Dart. – tjameson

0

Stai eseguendo questo in Dartium (come Dart) o in un altro browser (come JavaScript)? Assumerò quest'ultimo. Se si guarda (http://dart.googlecode.com/svn/branches/bleeding_edge/dart/client/dart.js), cerca tag di script come foo.dart e carica automaticamente foo.dart.js. Lo fa in un callback window.addEventListener ("DOMContentLoaded", function (e) {...}). Quella richiamata avviene prima del codice che aggiunge dinamicamente un tag script.

Quindi, è possibile caricare helloworld.dart.js nel codice, che è ciò che (http://dart.googlecode.com/svn/branches/bleeding_edge/dart/client/dart.js) farebbe comunque . Nota, comunque, che Dart, idealmente, cerca di trattare ogni tag di script come un isolato separato - non è come JavaScript.

Problemi correlati