2

我将使用 window.postMessage("", "*", [transferableData]) 在两个浏览器窗口之间发送数据。但是,我没有找到任何关于如何将类型转换为 Transferables 的直接答案。

因此,为了让我开始学习这一点,很高兴知道如何将简单的字符串转换为可传输(ByteBuffer)并在另一端(获取带有数据的消息的一侧)读取它。这将帮助我解决我的问题并了解这个概念。

重要更新:

这个问题把我引到这里:Dart Language: printing reports

可转移对象尚未在 Dart VM ( http://dartbug.com/4149 ) 上实现。这意味着,如果您通过 Dartium (Dart VM) 运行应用程序,则另一个窗口将接收和处理 postMessage 的第一个参数,而不是 Transferable Object。然而,JavaScript 完成了这项工作:对象被传输,原始数组被清空。

4

1 回答 1

2
import 'dart:convert';

var list = Utf8.encode('xxx');
var data = list is Uint8List ? list.buffer : new Uint8List.fromList(list).buffer;

window.PostMessage使用use发送数据

window.postMessage({'data': data}, '*', [data]);

并在接收端读取它

var string = Utf8.decode(message.data['data']);

另请参阅http://dartbug.com/19968了解可转让的状态。
据我所知,最近的 Dart 开发频道版本已经随 Dartium 38.xxx 一起发布。
这是一个可转让的小测试用例https://code.google.com/p/dart/source/browse/branches/bleeding_edge/dart/tests/html/transferables_test.dart

于 2014-11-22T14:28:25.500 回答