我将使用window.postMessage(""," *",[transferableData])在两个浏览器窗口之间发送数据。但是,我没有找到关于如何将类型转换为Transferables的直接答案。
所以,为了让我开始学习这个,很高兴知道如何将一个简单的String转换为Transferable(ByteBuffer)并在另一侧读取它(那边正在获取带有数据的消息)。这将有助于我解决我的问题并了解这个概念。
重要更新:
这个问题让我在这里:Dart Language: printing reports
Dart VM尚未实施可转移对象(http://dartbug.com/4149)。这意味着,如果您通过Dartium(Dart VM)运行应用程序,则另一个窗口将接收并处理postMessage的第一个参数,而不是Transferable Object。但是,JavaScript完成了这项任务:对象被转移,原始数组被清空。
答案 0 :(得分:2)
import 'dart:convert';
var list = Utf8.encode('xxx');
var data = list is Uint8List ? list.buffer : new Uint8List.fromList(list).buffer;
使用window.PostMessage
使用
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
的小型测试案例