DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: ZMskyuza
今日帖子: 25
在线用户: 12
导航: 论坛 -> 移动应用开发 斑竹:flyers,iamdream  
作者:
男 mp654kk (mp654kk) ▲△△△△ -
普通会员
2024/5/14 23:26:23
标题:
Fmx里获取Webbrowser完整Cookie的方法 浏览:464
加入我的收藏
楼主: 包括windows,安卓,ios环境下,讨论一下,谢谢!
----------------------------------------------
-
作者:
男 pcplayer (pcplayer) ★☆☆☆☆ -
普通会员
2024/5/15 0:21:20
1楼: 使用 JS 来搞吧
----------------------------------------------
-
作者:
男 chencong5025 (Nicosoft) ▲▲▲△△ -
普通会员
2024/5/15 10:54:24
2楼: 执行JS 回调 
通用
----------------------------------------------
-
作者:
男 mp654kk (mp654kk) ▲△△△△ -
普通会员
2024/5/15 12:41:19
3楼: 是用WebBrowser1.EvaluateJavaScript这个吗 但是我看它是个过程不是函数 而且只能有一个参数没法带回调函数 chatgpt给的代码没法用
----------------------------------------------
-
作者:
男 learndelphi (beside) ★☆☆☆☆ -
盒子活跃会员
2024/5/15 16:43:05
4楼: windows 下edge我好像可以。fmx的没用过
----------------------------------------------
-
作者:
男 mp654kk (mp654kk) ▲△△△△ -
普通会员
2024/5/15 23:10:18
5楼: 在window环境下这个获取不到cookie请问这个gpt代码问题出在哪里,ie核心才有效吗,能不能指定webbrowser使用什么核心,谢谢?

uses WinInet;
function GetCookie(const URL: string): string;
var
  dwSize: DWORD;
  lpData: PChar;
begin
   {q996 Qq513513}
  dwSize := 4096; // 设置一个足够大的缓冲区大小
  GetMem(lpData, dwSize);
  try
    if WinInet.InternetGetCookie(PChar(URL), nil, lpData, dwSize) then
      Result := lpData
    else
      Result := ''; // 处理错误或者没有找到 cookie 的情况
  finally
    FreeMem(lpData);
  end;
end;
----------------------------------------------
-
作者:
男 chencong5025 (Nicosoft) ▲▲▲△△ -
普通会员
2024/5/16 10:24:54
6楼: 执行JS 回调 
通用

其他平台先找到执行JS的办法  就行了
----------------------------------------------
-
作者:
男 mp654kk (mp654kk) ▲△△△△ -
普通会员
2024/5/16 13:13:41
7楼: @chencong5025 大侠可以写一下windows平台的吗 gpt的都用不了
WebBrowser1.EvaluateJavaScript('alert(document.cookie)');这个倒是没问题,问题是不能把cookie取出来,不会写这个回调.
----------------------------------------------
-
作者:
男 pcplayer (pcplayer) ★☆☆☆☆ -
普通会员
2024/5/16 18:44:02
8楼: VCL 底下,如果你用 TEdgeWebBrowser,代码如下:


implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  EdgeBrowser1.Navigate('https://cn.bing.com/');
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  S: string;
begin
  S := 'allCookies = document.cookie;';
  EdgeBrowser1.ExecuteScript(S);
end;

procedure TForm1.EdgeBrowser1ExecuteScript(Sender: TCustomEdgeBrowser;
  AResult: HRESULT; const AResultObjectAsJson: string);
begin
  Memo1.Lines.Add(AResultObjectAsJson);
end;

end.
----------------------------------------------
-
作者:
男 mp654kk (mp654kk) ▲△△△△ -
普通会员
2024/5/16 19:43:16
9楼: @pcplayer 感谢 我用的fmx里的webbrowser 安卓环境倒是简单 windows环境始终搞不定
----------------------------------------------
-
作者:
男 pcplayer (pcplayer) ★☆☆☆☆ -
普通会员
2024/5/16 20:34:49
10楼: Windows 环境下的 WebBrowser 是老旧的基于以前的 IE 的浏览器。功能上可能不行。其它不说,至少对于现代的 JavaScript 的支持,它就不行。

对于现代的 JavaScript 的支持,在 Windows 上面是 EdgeBrowser,在安卓上,Fmx 封装的 WebBrowser 自然是安卓系统自带的,那就肯定是支持的。

所以,现在如果涉及到浏览器开发,在 WINDOWS 上没必要用旧的浏览器了。
----------------------------------------------
-
作者:
男 pcplayer (pcplayer) ★☆☆☆☆ -
普通会员
2024/5/16 20:35:47
11楼: 如果你非要用旧的浏览器,那就使用它的接口。看看它的接口定义里面,有没有 Cookie 相关的方法。
----------------------------------------------
-
作者:
男 pcplayer (pcplayer) ★☆☆☆☆ -
普通会员
2024/5/16 20:39:13
12楼: 看了一下 Windows 底下的 Fmx 的 WebBrowser,多出来一个属性 WindowsEngine,可以选择用 IE 还是用 Edge。看来 Delphi 还是与时俱进嘛。
----------------------------------------------
-
作者:
男 pcplayer (pcplayer) ★☆☆☆☆ -
普通会员
2024/5/16 21:04:49
13楼: 经过俺的测试,FMX 的 WebBroser 如果你选用 IE,document.cookie 这个 JavaScript 根本执行不出正确结果。但是,如果选择是 edge 就没有问题。

所以,现代一些的 JavaScript IE 确实支持不了啊。如果非要 IE,需要考虑使用它的接口,而不是使用 JavaScript。
----------------------------------------------
-
作者:
男 mp654kk (mp654kk) ▲△△△△ -
普通会员
2024/5/16 21:53:36
14楼: @pcplayer 核心应该是没法选的吧 好像ie和edge都安装了就会用的edge的核心 我测试出来我fmx下webbrowser就是用的edge的核心
我看ChatGPT的例子
js回调是WebBrowser1.EvaluateJavaScript('window.location.href = "callback://" + encodeURIComponent(document.cookie);');
再结合WebBrowser1ShouldStartLoadWithRequest事件
可以取到cookie了但是这样会阻塞网页的显示变成白板
----------------------------------------------
-
作者:
男 pcplayer (pcplayer) ★☆☆☆☆ -
普通会员
2024/5/16 23:49:19
15楼: 我的 DELPHI 11 ,FMX 的 WebBrowser 有属性可以选择用 IE 还是 Edge。

你的是什么版本?
----------------------------------------------
-
作者:
男 mp654kk (mp654kk) ▲△△△△ -
普通会员
2024/5/17 0:24:06
16楼: 我是12.1 看错了 有WindowsEngine这个属性可以选 但是明明装了edge的而且设置为默认浏览器 我选edge说引擎无效, 访问https://ie.icoa.cn/这个网站看是ie11核心
----------------------------------------------
-
作者:
男 pcplayer (pcplayer) ★☆☆☆☆ -
普通会员
2024/5/17 0:46:44
17楼: 你的 EXE 目录底下,要有 edge 那个 dll 才能使用 edge。
----------------------------------------------
-
作者:
男 pcplayer (pcplayer) ★☆☆☆☆ -
普通会员
2024/5/17 0:47:59
18楼: Fmx 底下的 WebBrowser 封装得太好了,没有暴露 JS 执行后返回结果的那个事件。因此即便你选用 Edge 也没法获得 JS 执行的结果。

如果是 VCL 底下,使用 Edge 浏览器,是可以获得 JS 执行结果的。
----------------------------------------------
-
作者:
男 mp654kk (mp654kk) ▲△△△△ -
普通会员
2024/5/17 0:53:17
19楼: 要安装Microsoft WebView2是吗 我先试一下
----------------------------------------------
-
作者:
男 mp654kk (mp654kk) ▲△△△△ -
普通会员
2024/5/17 2:12:40
20楼: gpt说:以下是一些 WebView2 相关的 DLL 文件,你可能需要在 Delphi 项目中引用:

WebView2Loader.dll: 运行时加载器,用于加载 WebView2 运行时。
WebView2Runtime.dll: WebView2 运行时 DLL,包含了 Edge 浏览器核心。
WebView2.dll: WebView2 控件 DLL,用于在应用程序中显示 WebView2 控件。

我已经下载了webview2的运行时并安装,但是我只找到WebView2Loader.dll
另外两个找不到呢
----------------------------------------------
-
作者:
男 z_y_b_delphi (z_y_b_delphi) ★☆☆☆☆ -
普通会员
2024/5/17 12:03:19
21楼: 看时间,2点多还不睡啊,WebView2Loader.dll这是程序发布的时候用的,如果是Win7需要安装Microsoft Edge Dev,安装之后其他的dll就存在了。
----------------------------------------------
-
作者:
男 mp654kk (mp654kk) ▲△△△△ -
普通会员
2024/5/17 16:10:52
22楼: 是的睡得晚 微软官方下载的不行 在getit上下载的可以用了 换成edge核心果然好用许多 之前安装Delphi的时候用防火墙把Delphi禁了 现在为了用getit临时允许了 不知道会不会那啥
----------------------------------------------
-
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行62.5毫秒 RSS