8

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

测试.html:

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

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

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

为什么会这样?

4

3 回答 3

0

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

因此,您可以改为在代码中加载 helloworld.dart.js,这就是 (http://dart.googlecode.com/svn/branches/bleeding_edge/dart/client/dart.js) 无论如何都会做的。但是请注意,理想情况下,Dart 会尝试将每个脚本标签视为一个单独的隔离区——它不像 JavaScript。

于 2012-08-21T15:32:46.410 回答
0

这是 Dart 中的一个错误。这是错误报告的链接。

于 2012-11-01T04:13:49.373 回答
0

另一种动态加载 dart 代码的方法:http: //blog.sethladd.com/2013/04/dynamically-load-code-with-dart.html ?m=1

无需操作 DOM。使用 dart:isolates

于 2013-07-13T08:35:25.617 回答