aardio 拖拽外部文件到webview2 获得 本地文件路径 drag drop

aardio 默认的web.view 不支持,所以换个库

官方的issue解决方案

https://github.com/MicrosoftEdge/WebView2Feedback/issues/2313

webview2 库

https://github.com/aardiolib/webview2
这个库封装的事件很全面

安装方法

npm i @aardiolib/webview2
复制
.\node_modules\@aardiolib\
到aardio软件目录
.\lib\

项目简单示例

import win.ui;
import webview2;

/*DSG{{*/
var winform = win.form(text="webview2 Demo";right=759;bottom=469)
winform.add()
/*}}*/

..webview2.CreateCoreWebView2Environment(function(errorCode,createdEnvironment){
	
	createdEnvironment.CreateCoreWebView2Controller(winform,function(errorCode, createdController){
		
		winform.adjust = function(){
			createdController.put_Bounds(winform.getClientRect());
		}
		
		createdController.put_Bounds(winform.getClientRect());
		
		createdController.put_IsVisible(true);
		
		var m_webView = createdController.get_CoreWebView2();
		
		m_webView.Navigate("https://www.baidu.com/");
	})
})

winform.show();

win.loopMessage();

添加 NewWindowRequested 事件处理程序
外部文件拖入后,默认是弹出个新框,然后就能获取到文件url了,然后再将url传递给网页的页面,或者直接执行操作,再刷新页面即可
args.get_Uri() 就是文件地址

import win.ui;
import webview2;
import console;

/*DSG{{*/
var winform = win.form(text="webview2 Demo";right=759;bottom=469)
winform.add()
/*}}*/

..webview2.CreateCoreWebView2Environment(function(errorCode,createdEnvironment){
	
	createdEnvironment.CreateCoreWebView2Controller(winform,function(errorCode, createdController){
		
		winform.adjust = function(){
			createdController.put_Bounds(winform.getClientRect());
		}
		
		createdController.put_Bounds(winform.getClientRect());
		
		createdController.put_IsVisible(true);
		
		var m_webView = createdController.get_CoreWebView2();
		
		//添加 NewWindowRequested 事件处理程序
		m_webView.add_NewWindowRequested(function(args){
			//console.log("NewWindowRequested",args.get_Uri());
			
			args.put_Handled(true);
			//m_webView.Navigate(args.get_Uri());
		})
		
		m_webView.Navigate("https://www.baidu.com/");
	})
})

winform.show();

win.loopMessage();

库里面有一些相应的示例

最后用的这个老库

https://github.com/WDNLRuny/web.view2

sdk:64位

https://developer.microsoft.com/zh-cn/microsoft-edge/webview2/?form=MA13LH#download

https://msedge.sf.dl.delivery.mp.microsoft.com/filestreamingservice/files/578353e9-31f2-45fc-85e2-312f11180aaf/MicrosoftEdgeWebView2RuntimeInstallerX64.exe

web.view2 已废弃,本项目已停止维护。请使用新版本webview2

posted @ 2024-03-21 11:41  彭成刚  阅读(163)  评论(0编辑  收藏  举报