近期項目要用electron中做一個拖放文件上傳的功能,早前試驗過是沒有問題的,但是昨天出現了一個詭異的現象:從文件管理器拖文件進來后,鼠標圖案變成禁止的標志,松開后也沒有觸發drop事件。
搜索了一番解決辦法,很多人在講preventDefault的問題。很顯然不是一回事情,事件完全沒有觸發,哪里有default可以prevent啊。。。
嘗試重建項目試試drop事件也沒有成功,這個就很詭異了。。
又嘗試在mac上建工程,發現drop事件可以觸發,可問題是早前試驗成功的時候是在windows上搞定的。。
思索了一下人生之后又開始搜索之路。
找到問題根源如下:
https://github.com/electron/electron/issues/2329
github一個哥的回答
這個哥說在拖動的時候遇到一個icon不允許他拖放,他發現他是在用管理員模式運行npm的時候才會有這個問題,如果他不用管理員模式,就可以正常拖拽?。磥磉€真的是windows的坑)
接下來這個鏈接,說明了windows的安全機制導致無法拖拽的問題
有人提問在右鍵管理員模式下打開記事本,就無法拖放文件進去
UAC(從vista開始就存在)會將windows的不同進程分成不同的權限級別,Explorer(文件管理器)正常是運行在MIC級別,一般情況下electron的程序也是運行在MIC級別,文件拖拽可以發生在同一級別之間,或者從高級別-->拖到-->低級別的進程。但如果你是是用管理員權限運行你的electron程序,那么文件拖拽就會被禁止,因為文件管理器的級別沒有你管理員級別高。
解決辦法就是不要用管理員權限調試/運行electron應用。