当前位置: 首页 > news >正文

卖网站赚钱排名软件

卖网站赚钱,排名软件,做文案策划有些网站可看,广州页面制作公司一、问题描述&#xff1a; 在Delphi 中使用WebView2控件&#xff0c;如果预先把主界面置顶&#xff08;Self.FormStyle : fsStayOnTop;&#xff09;&#xff0c;此时&#xff0c;如果在Web页面中有使用&#xff08;<input type"file" id"fileInput" acc…

一、问题描述:

        在Delphi 中使用WebView2控件,如果预先把主界面置顶(Self.FormStyle := fsStayOnTop;),此时,如果在Web页面中有使用(<input type="file" id="fileInput" accept=".txt, .pdf, .doc, .docx" required>  )选择文件,这样就会导致选择文件的对话框被覆盖,从而无法操作。

二、解决方案

        由于WebView2通过H5打开文件选择窗口时,Delphi无法直接获取到事件通知,因为文件选择时由浏览器进程管理的,所以需要使用一些技巧来解决。

使用javascript监听文件选择事件:

        可以通过在 WebView2 中注入 JavaScript 代码来监听文件选择窗口的打开和关闭事件,然后通过 WebView2 的事件机制将这些事件传递到 Delphi 端。

操作步骤:

  1. 注入 JavaScript 代码:在页面加载完成后,注入 JavaScript 代码来监听文件选择窗口的打开和关闭事件。
  2. 通过 WebMessage 传递事件:将事件通过 `window.chrome.webview.postMessage` 传递到 Delphi 端。
  3. 在 Delphi 中处理事件:在 Delphi 中监听 WebView2 的 `WebMessageReceived` 事件,并根据接收到的消息调整主窗体的置顶状态。

示例代码:

JavaScript 代码:

document.addEventListener('focus', function(event) {if (event.target.tagName === 'INPUT' && event.target.type === 'file') {window.chrome.webview.postMessage('fileDialogOpen');}
}, true);document.addEventListener('blur', function(event) {if (event.target.tagName === 'INPUT' && event.target.type === 'file') {window.chrome.webview.postMessage('fileDialogClose');}
}, true);

Delphi 代码:

procedure TForm1.WebView2NavigationCompleted(ASender: TObject; const Args: ICoreWebView2NavigationCompletedEventArgs);
begin// 注入 JavaScript 代码WebView2.ExecuteScript('document.addEventListener(''click'', function(event) {' +'    if (event.target.tagName === ''INPUT'' && event.target.type === ''file'') {' +'        window.chrome.webview.postMessage(''fileDialogOpen'');' +'    }' +'}, true);',nil);
end;procedure TBase_Form.WebViewWebMessageReceived(Sender: TObject; const Source,MessageHTML, Json: WString);
beginif MessageHTML = 'fileDialogOpen' thenbeginSelf.FormStyle := fsNormal;FH5OpenDialog := True;end;end;

        因为文件选择按键获取焦点的同时只要点击,就立即失去了焦点,所以没有解决问题,这就需要配合Delphi的TApplicationEvents控件中的OnActivate事件来共同处理。

注意

      定义公用变量:FH5OpenDialog

procedure TBase_Form.ApplicationEvents1Activate(Sender: TObject);
beginif FH5OpenDialog thenbeginSelf.FormStyle := fsStayOnTop;FH5OpenDialog := False;end;
end;

http://www.yayakq.cn/news/72123/

相关文章:

  • o2o分销系统网站建设在线营销系统
  • 校园互动网站建设网页页面设计叫什么
  • 工业设计网站哪家好wordpress slide插件
  • 有没有免费做企业网站的游戏网站首页设计
  • 网站建设与管理升学就业方向网站建设入门到精通
  • 网站优化新闻自做业务网站
  • 手机的网站建设目标是什么游戏推广吧
  • 南山网站制作如何给国外网站做seo
  • 网站标识代码怎么加网络营销服务策略
  • 网站建设中单页源码品牌画册设计
  • 网站源码下载平台源码WordPress上传文件格式
  • 单位网站建设汇报网络工程可以从事什么工作
  • 武进网站建设香奈儿网站建设策划书
  • 老铁推荐个2021网站好吗湖南网站推
  • 电商网站开发文档安徽注册公司网上申请入口
  • 学网站建设需要几年WordPress仿站培训
  • 常平镇网站仿做深圳市住房和建设局红色警示查询
  • 赣州公司做网站ios开发者选项
  • 外贸网站建设软件有哪些爱客crm网页版登录
  • 重庆铜梁网站建设公司龙泉市做网站企业
  • ssp媒体服怎样做网站长沙感染人数最新消息
  • WordPress建站主机推荐最好的ui设计培训
  • 郑州哪里可以做网站上海网站推广 优帮云
  • 户网站建设的不全.珠海购物网站制作
  • 深圳网站建设价格是多少求个网站好人有好报2022
  • 赤峰网站开发app开发公司哪里做
  • 网站建设素材模板周口建设企业网站公司
  • 做爰视频网站直播软件有哪些平台
  • 用wordpress仿一个网站模板网站开发培训光山
  • 水禾田网站建设公司网站建设培训西安