2013-03-07 72 views
0

以下鏢clipboardData總是空

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中的剪貼板數據(甚至API在這個問題上保持沉默,並且源dart:html文件只是指向「本地代碼」

+1

只是爲了檢查 - 這是剪貼板數據,還是'evt.dataTransfer.setData('text/html',elem.innerHtml);'爲你工作? – 2013-03-07 09:06:14

+0

是的,'dataTransfer'是我正在尋找的屬性。它最近一定發生了變化 - 它仍然是API文檔中的'clipboardData','dataTransfer'在編輯器中給我一個警告,但它似乎工作。 謝謝! – ovangle 2013-03-07 09:12:42

+0

我添加了一個新的答案,它將上面的評論轉換爲答案(並解決了自動完成/編輯器警告) – 2013-03-07 11:42:03

回答

3

(從我原來的問題評論)

用這個代替:

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

這是一個attribute on MouseEvent (api ref),而不是基地Event類,你可以得到自動完成,並通過明確宣佈evt是除去編輯器警告MouseEvent

elem.onDragStart.listen((MouseEvent evt) { 
    evt.dataTransfer.setData('text/html', elem.innerHtml); 
}); 
0

clipboardData似乎已被棄用而沒有任何警告。在web_ui組件中(我首先觀察到這一點),編輯器無法將dataTransfer屬性識別爲Event實例上的有效屬性。我無法在網上找到任何有關爲什麼進行此項更改的參考信息(API文檔沒有對此事發表任何意見,我在討論板上也找不到任何最新帖子)...