飞镖语言:打印报告



我想知道如何在Dart上打印报告。

基本上,这是活动流程:

  1. 用户点击"报告"按钮。
  2. 将创建新的浏览器窗口。
  3. 相关数据将放置在新窗口中。

当然,如果有任何 API 可以做到这一点,我会使用它。

到目前为止,我已经尝试创建一个新窗口,在其上添加onMessage侦听器,并在主类上调用postMessage来发送数据。但是,它没有奏效。消息永远不会到达另一端(主>新的浏览器窗口)。

主飞镖类

var reportWindow;
void createReportWindow() {
    reportWindow = window.open("report.html", "");
}
void sendMessage(String message) {
    reportWindow.postMessage(message, "*");
}

报告飞镖类(链接到报告.html)

void startListening() {
    window.onMessage.listen((e) {
        print(e.data.toString());
    });
}

更新

从报告窗口开始发送到window.opener.postMessage(...),然后响应(message.source as WindowBase).postMessage(...)。这可能是返回值为 window.open 的错误(有关详细信息,请参阅 http://dartbug.com/20216)。

源语言

此单元测试中的代码应向您展示如何 https://github.com/dart-lang/core-elements/blob/master/test/core_media_query_test.dart 完成它。

我从一个新的URL打开一个窗口,从服务器加载其内容和一个Dart脚本(当然也可以编译为JavaScript)。打开的窗口通过sendMessage与主窗口通信。这在两个方向上都有效。

基本上,第二个窗口是第二个Dart浏览器应用程序。

这可能不完全是您想要的,但我想您的要求可以通过这种方式实现。

在此行 https://github.com/dart-lang/core-elements/blob/master/test/core_media_query_test.dart#L66 注释掉的代码可能适合您的要求。我在下面创建了解决方法,因为代码应该从主窗口中的代码调整第二个窗口的大小以测试 <core-media-query> 元素(顺便说一句,也不起作用)。但是我假设您只需要打开窗口,注释掉的代码应该可以正常工作。

最新更新