Enviar búsqueda
Cargar
Html 5 native drag
•
Descargar como KEY, PDF
•
3 recomendaciones
•
972 vistas
Weizhong Yang
Seguir
Tecnología
Denunciar
Compartir
Denunciar
Compartir
1 de 25
Descargar ahora
Recomendados
Retina mac
Retina mac
Weizhong Yang
貪食蛇
貪食蛇
Weizhong Yang
苦集滅道:透過開發客製 Sketch Plug-in 改善產品設計流程
苦集滅道:透過開發客製 Sketch Plug-in 改善產品設計流程
Weizhong Yang
Underscore
Underscore
cazhfe
14 Saving Loading and Application States
14 Saving Loading and Application States
Tom Fan
Inspire dgt 網路技術分享_flash actionscritp class
Inspire dgt 網路技術分享_flash actionscritp class
inspire digital
浏览器渲染与web前端开发
浏览器渲染与web前端开发
Duoyi Wu
17 Localization
17 Localization
Tom Fan
Recomendados
Retina mac
Retina mac
Weizhong Yang
貪食蛇
貪食蛇
Weizhong Yang
苦集滅道:透過開發客製 Sketch Plug-in 改善產品設計流程
苦集滅道:透過開發客製 Sketch Plug-in 改善產品設計流程
Weizhong Yang
Underscore
Underscore
cazhfe
14 Saving Loading and Application States
14 Saving Loading and Application States
Tom Fan
Inspire dgt 網路技術分享_flash actionscritp class
Inspire dgt 網路技術分享_flash actionscritp class
inspire digital
浏览器渲染与web前端开发
浏览器渲染与web前端开发
Duoyi Wu
17 Localization
17 Localization
Tom Fan
02 Objective-C
02 Objective-C
Tom Fan
React js
React js
國昭 張
改善 Angular 開發流程:你所不知道的 Schematics 程式碼產生器
改善 Angular 開發流程:你所不知道的 Schematics 程式碼產生器
Chieh Kai Yang
Blazor 與 Radzen 同行
Blazor 與 Radzen 同行
Jimmy Ho
ASP.Net MVC Framework
ASP.Net MVC Framework
國昭 張
AJAX Basic
AJAX Basic
Ryan Chung
如何攻破大型副本 大型專案的開發與團隊合作經驗 聊天室
如何攻破大型副本 大型專案的開發與團隊合作經驗 聊天室
Study4TW
07 View Controllers
07 View Controllers
Tom Fan
RxJS 6 新手入門
RxJS 6 新手入門
Will Huang
HTML5 Samples
HTML5 Samples
Ryan Chung
05 MapKit and Text Input
05 MapKit and Text Input
Tom Fan
KISSY for starter
KISSY for starter
yiming he
關於 Javascript 非同步的那些事兒 公開版
關於 Javascript 非同步的那些事兒 公開版
Kirk Chen
Javascript
Javascript
Ryan Chung
真實環境的Asp.net MVC
真實環境的Asp.net MVC
Study4TW
深入浅出浏览器硬件加速
深入浅出浏览器硬件加速
Baidu, Inc.
KISSY_Component
KISSY_Component
yiming he
Template mb-kao
Template mb-kao
xwcoder
深入淺出Node.JS
深入淺出Node.JS
國昭 張
從前端設計的角度來看 Angular - TW2018 amos
從前端設計的角度來看 Angular - TW2018 amos
Amos Lee
16 CoreData
16 CoreData
Tom Fan
Yog Framework
Yog Framework
fansekey
Más contenido relacionado
La actualidad más candente
02 Objective-C
02 Objective-C
Tom Fan
React js
React js
國昭 張
改善 Angular 開發流程:你所不知道的 Schematics 程式碼產生器
改善 Angular 開發流程:你所不知道的 Schematics 程式碼產生器
Chieh Kai Yang
Blazor 與 Radzen 同行
Blazor 與 Radzen 同行
Jimmy Ho
ASP.Net MVC Framework
ASP.Net MVC Framework
國昭 張
AJAX Basic
AJAX Basic
Ryan Chung
如何攻破大型副本 大型專案的開發與團隊合作經驗 聊天室
如何攻破大型副本 大型專案的開發與團隊合作經驗 聊天室
Study4TW
07 View Controllers
07 View Controllers
Tom Fan
RxJS 6 新手入門
RxJS 6 新手入門
Will Huang
HTML5 Samples
HTML5 Samples
Ryan Chung
05 MapKit and Text Input
05 MapKit and Text Input
Tom Fan
KISSY for starter
KISSY for starter
yiming he
關於 Javascript 非同步的那些事兒 公開版
關於 Javascript 非同步的那些事兒 公開版
Kirk Chen
Javascript
Javascript
Ryan Chung
真實環境的Asp.net MVC
真實環境的Asp.net MVC
Study4TW
深入浅出浏览器硬件加速
深入浅出浏览器硬件加速
Baidu, Inc.
KISSY_Component
KISSY_Component
yiming he
Template mb-kao
Template mb-kao
xwcoder
深入淺出Node.JS
深入淺出Node.JS
國昭 張
從前端設計的角度來看 Angular - TW2018 amos
從前端設計的角度來看 Angular - TW2018 amos
Amos Lee
La actualidad más candente
(20)
02 Objective-C
02 Objective-C
React js
React js
改善 Angular 開發流程:你所不知道的 Schematics 程式碼產生器
改善 Angular 開發流程:你所不知道的 Schematics 程式碼產生器
Blazor 與 Radzen 同行
Blazor 與 Radzen 同行
ASP.Net MVC Framework
ASP.Net MVC Framework
AJAX Basic
AJAX Basic
如何攻破大型副本 大型專案的開發與團隊合作經驗 聊天室
如何攻破大型副本 大型專案的開發與團隊合作經驗 聊天室
07 View Controllers
07 View Controllers
RxJS 6 新手入門
RxJS 6 新手入門
HTML5 Samples
HTML5 Samples
05 MapKit and Text Input
05 MapKit and Text Input
KISSY for starter
KISSY for starter
關於 Javascript 非同步的那些事兒 公開版
關於 Javascript 非同步的那些事兒 公開版
Javascript
Javascript
真實環境的Asp.net MVC
真實環境的Asp.net MVC
深入浅出浏览器硬件加速
深入浅出浏览器硬件加速
KISSY_Component
KISSY_Component
Template mb-kao
Template mb-kao
深入淺出Node.JS
深入淺出Node.JS
從前端設計的角度來看 Angular - TW2018 amos
從前端設計的角度來看 Angular - TW2018 amos
Similar a Html 5 native drag
16 CoreData
16 CoreData
Tom Fan
Yog Framework
Yog Framework
fansekey
Dev camps Windows Store App 市集應用程式最佳實踐
Dev camps Windows Store App 市集應用程式最佳實踐
Meng-Ru (Raymond) Tsai
使用Javascript及HTML5打造協同運作系統
使用Javascript及HTML5打造協同運作系統
Hsu Ping Feng
Network and Multitasking
Network and Multitasking
yarshure Kong
Berserk js
Berserk js
taobao.com
D2_Node在淘宝的应用实践
D2_Node在淘宝的应用实践
Jackson Tian
Blazor in NET 8 的重大改變___________________
Blazor in NET 8 的重大改變___________________
Gelis Wu
Nosql及其主要产品简介
Nosql及其主要产品简介
振林 谭
Zabbix in PPTV
Zabbix in PPTV
ViSenze - Artificial Intelligence for the Visual Web
Script with engine
Script with engine
Webrebuild
Servlet & JSP 教學手冊第二版 - 第 9 章:整合資料庫
Servlet & JSP 教學手冊第二版 - 第 9 章:整合資料庫
Justin Lin
John Resig Beijing 2010 (中文版)
John Resig Beijing 2010 (中文版)
Jia Mi
Data Analyse Black Horse - ClickHouse
Data Analyse Black Horse - ClickHouse
Jack Gao
How to ASP.NET MVC4
How to ASP.NET MVC4
Daniel Chou
Node.js在淘宝的应用实践
Node.js在淘宝的应用实践
taobao.com
Html5和css3入门
Html5和css3入门
Xiujun Ma
redux-observable with react-apollo
redux-observable with react-apollo
Tripmoment
以Code igniter為基礎的網頁前端程式設計
以Code igniter為基礎的網頁前端程式設計
Amigo 陳兆祥
浅析浏览器解析和渲染
浅析浏览器解析和渲染
Ailsa126
Similar a Html 5 native drag
(20)
16 CoreData
16 CoreData
Yog Framework
Yog Framework
Dev camps Windows Store App 市集應用程式最佳實踐
Dev camps Windows Store App 市集應用程式最佳實踐
使用Javascript及HTML5打造協同運作系統
使用Javascript及HTML5打造協同運作系統
Network and Multitasking
Network and Multitasking
Berserk js
Berserk js
D2_Node在淘宝的应用实践
D2_Node在淘宝的应用实践
Blazor in NET 8 的重大改變___________________
Blazor in NET 8 的重大改變___________________
Nosql及其主要产品简介
Nosql及其主要产品简介
Zabbix in PPTV
Zabbix in PPTV
Script with engine
Script with engine
Servlet & JSP 教學手冊第二版 - 第 9 章:整合資料庫
Servlet & JSP 教學手冊第二版 - 第 9 章:整合資料庫
John Resig Beijing 2010 (中文版)
John Resig Beijing 2010 (中文版)
Data Analyse Black Horse - ClickHouse
Data Analyse Black Horse - ClickHouse
How to ASP.NET MVC4
How to ASP.NET MVC4
Node.js在淘宝的应用实践
Node.js在淘宝的应用实践
Html5和css3入门
Html5和css3入门
redux-observable with react-apollo
redux-observable with react-apollo
以Code igniter為基礎的網頁前端程式設計
以Code igniter為基礎的網頁前端程式設計
浅析浏览器解析和渲染
浅析浏览器解析和渲染
Más de Weizhong Yang
Flutter BLE
Flutter BLE
Weizhong Yang
怎樣在 Flutter app 中使用 Google Maps
怎樣在 Flutter app 中使用 Google Maps
Weizhong Yang
關於延長役期這件事情
關於延長役期這件事情
Weizhong Yang
Dart null safety
Dart null safety
Weizhong Yang
導入 Flutter 前你應該知道的事
導入 Flutter 前你應該知道的事
Weizhong Yang
Github Actions
Github Actions
Weizhong Yang
iPlayground: CarPlay and MFI Hearing Aids
iPlayground: CarPlay and MFI Hearing Aids
Weizhong Yang
CocoaPods private repo
CocoaPods private repo
Weizhong Yang
Flutter 踩雷心得
Flutter 踩雷心得
Weizhong Yang
那些年被蘋果 Ban 掉的 API
那些年被蘋果 Ban 掉的 API
Weizhong Yang
給 iOS 工程師的 Flutter 開發
給 iOS 工程師的 Flutter 開發
Weizhong Yang
給 iOS 工程師的 Vue.js 開發
給 iOS 工程師的 Vue.js 開發
Weizhong Yang
使用 switch/case 重構程式碼
使用 switch/case 重構程式碼
Weizhong Yang
怎樣寫出比較沒有問題的 Code
怎樣寫出比較沒有問題的 Code
Weizhong Yang
Aspect Oriented Programming
Aspect Oriented Programming
Weizhong Yang
Mac OS X 與 iOS 的 Audio API
Mac OS X 與 iOS 的 Audio API
Weizhong Yang
Python 的文件系統
Python 的文件系統
Weizhong Yang
Input Method Kit
Input Method Kit
Weizhong Yang
Refactoring
Refactoring
Weizhong Yang
Core animation
Core animation
Weizhong Yang
Más de Weizhong Yang
(20)
Flutter BLE
Flutter BLE
怎樣在 Flutter app 中使用 Google Maps
怎樣在 Flutter app 中使用 Google Maps
關於延長役期這件事情
關於延長役期這件事情
Dart null safety
Dart null safety
導入 Flutter 前你應該知道的事
導入 Flutter 前你應該知道的事
Github Actions
Github Actions
iPlayground: CarPlay and MFI Hearing Aids
iPlayground: CarPlay and MFI Hearing Aids
CocoaPods private repo
CocoaPods private repo
Flutter 踩雷心得
Flutter 踩雷心得
那些年被蘋果 Ban 掉的 API
那些年被蘋果 Ban 掉的 API
給 iOS 工程師的 Flutter 開發
給 iOS 工程師的 Flutter 開發
給 iOS 工程師的 Vue.js 開發
給 iOS 工程師的 Vue.js 開發
使用 switch/case 重構程式碼
使用 switch/case 重構程式碼
怎樣寫出比較沒有問題的 Code
怎樣寫出比較沒有問題的 Code
Aspect Oriented Programming
Aspect Oriented Programming
Mac OS X 與 iOS 的 Audio API
Mac OS X 與 iOS 的 Audio API
Python 的文件系統
Python 的文件系統
Input Method Kit
Input Method Kit
Refactoring
Refactoring
Core animation
Core animation
Html 5 native drag
1.
HTML 5 Native
Drag 楊維中(a.k.a zonble)
2.
話說… • 有次聽了一位資深 Web
Developer 發表 關於 HTML 5 的演講,裡頭提到 Native Drag • …聽完覺得完全沒搔到癢處 • …果然要講跟 Native 有關的東西,你還 是得要玩過一點 Native 的東西才行
3.
在 Native Drag
之前? • 網頁上的 Drag and Drop,其實就只是讓 某個 HTML Element 移動位置而已 • 讓某個 HTML Element 跟著滑鼠 • 拉範圍不能超過目前網頁
4.
Native Drag • 將要透過
Drag and Drop 交換的資料寫入 系統剪貼簿 • Mac OS X:NSPasteboard • 透過系統 API 設定滑鼠游標圖片
5.
所以可以… • 瀏覽器不同網頁之間 拉資料 •
不同瀏覽器之間 拉資料 • 瀏覽器與其他應用程式之間 拉資料
6.
其實… • 瀏覽器本來就有一定程度的 Native
Drag,但是原本 限於部分種類的資 料… • 文字 • 圖片
7.
以前的作法 • 如果想將 HTML
中出現一個可以 拉到 瀏覽器之外的 custom 資料,我們需要寫 一個瀏覽器 plug-in • 瀏覽器 plug-in 就是在瀏覽器畫面中 出 一塊 Native View,裡頭的實作當然就是 Native 的,於是可以用 Native 方式交換
8.
瀏覽器 Plug-in • Windows:可能要寫
ActiveX Control, 會有一堆安全性問題… • Mac OS X:原本 WebKit Plug-in 超好寫, 但是 10.7 Lion 之後禁止 Safari 載入 WebKit Plug-in…
9.
Demo • Sample Code:https://github.com/zonble/
NativeDrag • 參考文件:WebKit DOM Programming Topics - Using Drag and Drop From JavaScript
10.
WebView 與 NSTableView
交換資料
11.
怎麼做 • 先解釋怎樣從 WebView
資料放到 NSTableView • 再解釋怎樣從 NSTableView 資料到 WebView
12.
從 WebView
資料放 到 NSTableView
13.
JavaScript • 要讓一個 HTML
Element 變成可以用 Native Drag 拉 • 加上 CSS 屬性:-webkit-user-drag: element; • 加上 ondragstart 的 handler • <div style=”-webkit-user-drag: element;”
14.
JavaScript 呼叫系統剪貼簿 dragstart = function(this,
event) { var dataTransfer = event.dataTransfer; dataTransfer.setData(“key”, “value string”); return true; };
15.
Objective C •
冊可以 Drop 的 Data Type • [self.tableView registerForDraggedTypes:@[@”key”]]; • NSView 需要實作 NSDraggingDestination 才能支援 Drop 資料 • NSTableView DataSource 需要實作兩個 method
16.
Objective C - (NSDragOperation)tableView:(NSTableView
*)tableView validateDrop:(id <NSDraggingInfo>)info proposedRow: (NSInteger)row proposedDropOperation: (NSTableViewDropOperation)dropOperation { NSPasteboard *pasteBoard = [info draggingPasteboard]; NSString *value = [pasteBoard stringForType:@”key”]; if (value) { return NSDragOperationCopy; } return NSDragOperationNone; }
17.
setData() • JavaScript 會透過
dataTransfer 物件的 setData() 與 getData() 交換資料 • …但是裡頭的資料目前只能夠是字串, 如果是 array 等物件,會變成 [object Object] 類字串 • 所以如果是複雜的資料,我們可以一次
18.
setData() • 既然只能用字串… •
把 JavaScript 物件透過 JSON.stringify() 與 JSON.parse() 轉成字串 • Objective C 可以用 NSJSONSerialization 或是其他第三方 JSON Parser
19.
查看全部剪貼簿內容?
Pasteboard Peeker 蘋果雖然說 Deprecated,但是還是很好用
20.
從 NSTableView
資 料放到 WebView
21.
Objective C • NSView
只要實作一個 method 就可以開 始 Drag 東西出來 • dragImage:at:offset:event:pasteboard:sour ce:slideBack: • NSTableView DataSource 則是要實作 tableView:writeRowsWithIndexes:toPasteb
22.
Objective C - (BOOL)tableView:(NSTableView
*)tableView writeRowsWithIndexes:(NSIndexSet *)rowIndexes toPasteboard:(NSPasteboard *)pboard { [pboard declareTypes:@[@”key”]; [pboard setString:@"Value String" forType:@”key”]; return YES; }
23.
JavaScript • 要讓一個 HTML
Element 變成可以接受 Drop • 加上 CSS 屬性:-webkit-user-drop: element; • 加上 ondragenter、ondragover、ondrop 等 handler
24.
JavaScript • 文件上面說 ondragenter
與 ondragover 裡 頭,一定要呼叫 event.preventDefault(); 不然沒有作用 • 我們可以從 dataTransfer.getData() 拿到 NSTableView 過來的資料
25.
Das ist alles.
Notas del editor
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
Descargar ahora