dart2js:J.getInterceptor$x(…)。get$document不是函数

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

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