2012-08-11 14 views
5

का उपयोग कर गतिशील रूप से एक डार्ट स्क्रिप्ट लोड करें मैं डार्ट का उपयोग करके गतिशील रूप से एक डार्ट स्क्रिप्ट लोड करने का प्रयास कर रहा हूं। मैं कुछ इस तरह उपयोग कर रहा हूँ:डार्ट

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); 
} 

यह काम नहीं करता। हालांकि, अगर मैं HTML फ़ाइल में एक ही कोड इनलाइन, यह ठीक काम करता है:

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> 
... 

हो रहा क्यों है?

+0

यह एक बग की तरह दिखता है। शायद आपको [डार्टबग] (http://www.dartbug.com) पर एक समस्या जोड़नी चाहिए –

+0

मैं सहमत हूं। वर्तमान में डार्ट स्क्रिप्ट एलिमेंट() के माध्यम से लोड करने योग्य नहीं होना चाहिए (यह जावास्क्रिप्ट लोड करना है और यहां तक ​​कि इंटर-संचार हवा में बहुत अधिक है)। वर्तमान में डार्ट कोड लोड करने का प्राथमिक तरीका Isolate.spawnURI() –

+0

@MattB के साथ है: मैंने देखा कि डार्ट कोड इनलाइन करना संभव है: http://www.dartlang.org/articles/embedding-in-html/ और यह काम करता है ! –

उत्तर

1

यह डार्ट में एक बग था। यहां bug report का लिंक दिया गया है।

+0

अलग-अलग लगता है डायनाम कोड को गतिशील रूप से लोड करने का एकमात्र समर्थित तरीका है। – tjameson

0

क्या आप इसे डार्टियम (डार्ट के रूप में) में या किसी अन्य ब्राउज़र (जावास्क्रिप्ट के रूप में) में चला रहे हैं? मैं बाद वाले को मानने जा रहा हूँ। यदि आप (http://dart.googlecode.com/svn/branches/bleeding_edge/dart/client/dart.js) देखते हैं, तो यह foo.dart जैसे स्क्रिप्ट टैग की तलाश करता है और स्वचालित रूप से foo.dart.js. लोड करता है। यह एक खिड़की में करता है .addEventListener ("DOMContentLoaded", फ़ंक्शन (ई) {...}) कॉलबैक। वह कॉलबैक आपके कोड से पहले होता है जो गतिशील रूप से एक स्क्रिप्ट टैग जोड़ता है।

इसलिए, आप इसके बजाय अपने कोड में helloworld.dart.js लोड कर सकते हैं, जो है (http://dart.googlecode.com/svn/branches/bleeding_edge/dart/client/dart.js) वैसे भी करेगा । नोट, हालांकि, डार्ट, आदर्श रूप से, प्रत्येक स्क्रिप्ट टैग को एक अलग पृथक के रूप में इलाज करने का प्रयास करता है - यह जावास्क्रिप्ट की तरह नहीं है।

संबंधित मुद्दे