0

以下

main.html

<!DOCTYPE html>

<html>
  <head>
    <title>test</title>
  </head>
  <body>
    <p id="test" draggable="true">hello world</p> 
    <script type="application/dart" src="main.dart"></script>
    <!-- for this next line to work, your pubspec.yaml file must have a dependency on 'browser' -->
    <script src="packages/browser/dart.js"></script>
  </body>
</html>

およびmain.dart

import 'dart:html';
void main() {
  var elem = query('#test');
  elem.onDragStart.listen((evt) {
    evt.clipboardData.setData('text/html', elem.innerHtml);
  });
}

例外を生成しています

The null object does not have a method 'setData'.

NoSuchMethodError : method not found: 'setData'
Receiver: null
Arguments: ["text/html", "hello world"]

検索しましたが、間違っている可能性のあることや、dartのclipboardDataに関する関連情報がまったく見つかりません(APIでさえこの問題については沈黙しており、ソースのdart:htmlファイルは「ネイティブコード」を指しているだけです。 「」

4

2 に答える 2

3

(私のコメントから元の質問まで)

代わりにこれを使用してください:

evt.dataTransfer.setData('text/html', elem.innerHtml);

これは基本クラスではなく(api ref)の属性でMouseEventあり、次のタイプEventであることを明示的に宣言することで、オートコンプリートを取得してエディターの警告を削除できます。evtMouseEvent

elem.onDragStart.listen((MouseEvent evt) {
  evt.dataTransfer.setData('text/html', elem.innerHtml);
});
于 2013-03-07T11:41:05.127 に答える
0

clipboardData警告なしに非推奨になっているようです。web_uiコンポーネント(私が最初にこれを観察した場所)では、dataTransfer属性は、のインスタンスの有効な属性としてエディターによって認識されませんEvent。この変更が行われた理由について、Web上で参照を見つけることができません(APIドキュメントはこの問題について何も述べておらず、ディスカッション掲示板に最近の投稿を見つけることができませんでした)...

于 2013-03-07T10:54:33.837 に答える