Dynamic 使用dart动态加载dart脚本

Dynamic 使用dart动态加载dart脚本,dynamic,dart,Dynamic,Dart,我正在尝试使用dart动态加载dart脚本。我用的是这样的东西: test.html: 它不起作用。但是,如果我在HTML文件中内联了相同的代码,它可以正常工作: test.html: 。。。 #导入('dart:html'); main(){ var script=new ScriptElement(); script.type='application/dart'; script.src='helloworld.dart'; document.body.elements.add(脚本); }

我正在尝试使用dart动态加载dart脚本。我用的是这样的东西:

test.html:

它不起作用。但是,如果我在HTML文件中内联了相同的代码,它可以正常工作:

test.html:

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

为什么会发生这种情况?

您是在Dartium(作为Dart)还是在其他浏览器(作为JavaScript)中运行此功能?我将假设后者。如果你看(http://dart.googlecode.com/svn/branches/bleeding_edge/dart/client/dart.js),它查找脚本标记,如foo.dart,并自动加载foo.dart.js。它在window.addEventListener(“DOMContentLoaded”,函数(e){…})回调中执行此操作。该回调发生在动态添加脚本标记的代码之前


因此,您可以在代码中加载helloworld.dart.js,这就是(http://dart.googlecode.com/svn/branches/bleeding_edge/dart/client/dart.js)反正我也会的。然而,请注意,Dart在理想情况下会将每个脚本标记作为一个单独的隔离项来对待——它不像JavaScript。

这是Dart中的一个bug。以下是指向的链接。

动态加载dart代码的另一种方法:


不需要操纵DOM。使用dart:隔离它看起来像一个bug。也许你应该在我同意的问题上添加一个问题。目前,Dart不应通过ScriptElement()加载(这是为了加载javascript,即使是内部通信也很悬而未决)。目前加载dart代码的主要方法是使用Isolate.spawnURI()@MattB:我发现内联dart代码是可能的:而且很有效!是的,可以嵌入dart代码。只是ScriptElement不是设计用于Dart代码的,只是JavaScript。即使这样,也不是为了共享对加载的代码的访问。似乎隔离是动态加载Dart代码的唯一受支持的方式。
...
<script src="http://dart.googlecode.com/svn/branches/bleeding_edge/dart/client/dart.js"></script>
<script type="application/dart" src="test.dart"></script>
...
#import('dart:html');
main() {
    var script = new ScriptElement();
    script.type = 'application/dart';
    script.src = 'helloworld.dart';
    document.body.elements.add(script);
}
...
<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>
...