dart2js:J.getInterceptor$x(…)。get$document不是函数
Dartium中的一切都很好,当我在Chrome中以JavaScript的形式编译和执行该类时,我得到:dart2js:J.getInterceptor$x(…)。get$document不是函数,dart,dart2js,Dart,Dart2js,Dartium中的一切都很好,当我在Chrome中以JavaScript的形式编译和执行该类时,我得到: Uncaught TypeError: J.getInterceptor$x(...).get$document is not a function J.get$document$x @ main.dart:7 dart.ContentManager._getFiles$0 @ ContentManager.dart:117 dart.ContentManager._initF
Uncaught TypeError: J.getInterceptor$x(...).get$document is not a function
J.get$document$x @ main.dart:7
dart.ContentManager._getFiles$0 @ ContentManager.dart:117
dart.ContentManager._initFrame$0 @ ContentManager.dart:59
dart.ContentManager$_internal_closure0.call$1 @ ContentManager.dart:44
dart.invokeClosure_closure0.call$0 @ js_helper.dart:2373
dart._IsolateContext.eval$1 @ isolate_helper.dart:462
dart._callInIsolate @ isolate_helper.dart:54
dart.invokeClosure @ js_helper.dart:2373
(anonymous function) @ js_helper.dart:2397
通常我想为我的代码片段创建一个注释系统
这是主飞镖
import "ContentManager.dart";
void main() {
ContentManager manager = new ContentManager.activate();
}
和ContentManager.dart:
此脚本的主要目的是通过单击链接加载框架,顶部窗口将从框架的文本区域获取脚本名称,执行它并在单击按钮后以代码高亮显示
import 'dart:html';
import 'dart:async';
import "package:prettify/prettify.dart";
void setStatus([String msg = ""]) {
querySelector("#status").text = msg;
}
class ContentManager {
static int _instanceCount = 0;
String _baseUrl;
var _frame = querySelector("#contentFrame");
Element _code = querySelector("#code");
Element _fileButtons = querySelector("#fileButtons");
Element _activeFileButton;
List<String> _files;
factory ContentManager.activate() {
if (_instanceCount > 0) {
throw "Only one Content Manager can be active at same time";
} else {
_instanceCount++;
return new ContentManager._internal();
}
}
ContentManager._internal() {
_initFrameVisibility();
List<Element> links = querySelectorAll("#contentList a");
// Replace behavior of links in navigation
links.forEach((link) {
link.addEventListener("click", (e) {
e.preventDefault();
// Load and serve frame with selected url
load(e.target.href);
});
});
window.localStorage["lastPage"] ??= (links[0] as AnchorElement).href;
load(window.localStorage["lastPage"]);
window.addEventListener("message", (message) {
if (message.data == "ready") {
_initFrame();
setStatus();
}
}, false);
querySelector("#toggleFrameButton").addEventListener("click", (_) {
toggleFrame();
});
}
void _initFrame() {
_baseUrl = _frame.src.substring(0, _frame.src.lastIndexOf("/") + 1);
_fileButtons.innerHtml = "";
_files = _getFiles();
_files.forEach((file) {
if (file.endsWith(".dart")) {
Element fileButton =
new Element.html("<button class=\"btn btn-primary\"></button>");
fileButton.text = file.substring(0, file.indexOf("."));
fileButton.addEventListener("click", _fileButtonHandler);
_fileButtons.children.add(fileButton);
}
});
_frame.contentWindow.document.querySelector("#fileList").style.display =
"none";
}
void _initFrameVisibility() {
window.localStorage["showFrame"] ??= "1";
if (window.localStorage["showFrame"] == "1") {
toggleFrame(show: true);
} else if (window.localStorage["showFrame"] == "0") {
toggleFrame(show: false);
}
}
void _fileButtonHandler(e) {
String url = _baseUrl + e.target.text + ".dart";
if (_activeFileButton != null) {
_activeFileButton.classes.remove("active");
}
_activeFileButton = e.target;
_activeFileButton.classes.add("active");
_loadCode(url);
}
Future _loadCode(String url) async {
setStatus("Loading...");
String code = await HttpRequest.getString(url);
_code.text = code;
ScriptElement script = new ScriptElement();
script.type = "application/dart";
script.src = url;
script.addEventListener("load", (e) => setStatus());
_frame.contentWindow.document.head.children.add(script);
_code.classes.remove("prettyprinted");
prettyPrint();
}
List<String> _getFiles() {
Element textarea = _frame.contentWindow.document.querySelector("#fileList");
List<String> fileList = textarea.text.split("\n");
for (int i = 0; i < fileList.length; i++) {
fileList[i] = fileList[i].trim();
}
return fileList;
}
void load(String url) {
setStatus("Loading...");
_frame.setAttribute("src", url);
window.localStorage["lastPage"] = url;
}
void toggleFrame({show}) {
Element frameContainer = querySelector("#frameContainer");
Element codeContainer = querySelector("#codeContainer");
if(frameContainer.classes.contains("hide") || show == true) {
frameContainer.classes.remove("hide");
codeContainer.classes.remove("col-md-12");
codeContainer.classes.add("col-md-8");
window.localStorage["showFrame"] = "1";
} else if (!frameContainer.classes.contains("hide") || show == false) {
frameContainer.classes.add("hide");
codeContainer.classes.remove("col-md-8");
codeContainer.classes.add("col-md-12");
window.localStorage["showFrame"] = "0";
}
}
}
公开发行
name: CodeSnippets
description: Code Snippets
version: 0.0.1
dependencies:
prettify: ^0.2.0
bootstrap: ^3.3.4
browser: ^0.10.0
飞镖
import 'dart:html';
void main() {
window.top.postMessage("ready", window.location.href);
}
帧文件示例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<textarea id="fileList">
main.dart
defaultValue.dart
finalConst.dart
interpolation.dart
types.dart
stringEqualOperator.dart
creatingStrings.dart
boolean.dart
list.dart
</textarea>
<script type="application/dart" src="/Dart/execute.dart"></script>
<script src="/Dart/execute.dart.js"></script>
<script src="packages/browser/dart.js"></script>
</body>
</html>
标题
主飞镖
默认值。省道
终结者飞镖
省道
类型.省道
stringEqualOperator.dart
创建字符串。省道
布尔.省道
列表.省道
这是一种跨框架文档访问。另请参见,不应将
添加到页面,因为浏览器
包专用于用JavaScript副本替换Dart脚本。谢谢你,塞德里克,我删除了此脚本
冈特-我使用发布版本
-仍然存在相同的问题。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<textarea id="fileList">
main.dart
defaultValue.dart
finalConst.dart
interpolation.dart
types.dart
stringEqualOperator.dart
creatingStrings.dart
boolean.dart
list.dart
</textarea>
<script type="application/dart" src="/Dart/execute.dart"></script>
<script src="/Dart/execute.dart.js"></script>
<script src="packages/browser/dart.js"></script>
</body>
</html>