Chromimu与JS交互的测试
CHROMIMU与JS交互的测试 好东西 谷歌浏览器 学习 研究
Chromimu与JS交互的测试
版权声明:本文为博主原创文章,未经博主允许不得转载。
测试一
为解决ExecuteJavascript无法得到返回值的问题,尝试采用JS Dialog和OnJsDialog的方法。
测试结果:可以采用此法传递Js的结果值。
JS
alter('abc');
confirm('abc');
DELPHI
procedure TForm1.ChromiumFMXJsdialog(Sender: TObject;
const browser: ICefBrowser; const originUrl, acceptLang: ustring;
dialogType: TCefJsDialogType; const messageText, defaultPromptText: ustring;
callback: ICefJsDialogCallback; out suppressMessage, Result: Boolean);
begin
case dialogType of
TCefJsDialogType.JSDIALOGTYPE_ALERT: self.Caption:='ALTERT:' + messageText;
TCefJsDialogType.JSDIALOGTYPE_CONFIRM: self.Caption:='CONFIRM:' + messageText;
end;
Result:=true;
end;
测试二
JS调用Delphi自定义的方法。
测试结果:
1. 可以成功调用;
2. JS可以接收到Delphi方法的返回值;
3. JS的输入参数长度,65214*9是没问题的,更长的长度没有做测试。
TTestExtension = class
class function addTask(songnumber: string): boolean;
end;
TCustomRenderProcessHandler = class(TCefRenderProcessHandlerOwn)
protected
procedure OnWebKitInitialized; override;
end;
class function TTestExtension.addTask(songnumber: string): boolean;
begin
showmessage('addTask:' + songnumber);
// result:= (songnumber.Substring(0,1)='1') or //JS可接收该返回值
// (songnumber.Substring(0,1)='2') ;
end;
procedure TCustomRenderProcessHandler.OnWebKitInitialized;
begin
TCefRTTIExtension.Register('app', TTestExtension);
end;
initialization
CefRemoteDebuggingPort := 9000;
CefRenderProcessHandler := TCustomRenderProcessHandler.Create;
CefBrowserProcessHandler := TCefBrowserProcessHandlerOwn.Create;
测试三
用默认浏览器打开Chromium页面中的"_blank"超链。
测试结果:
1. 可以在delphi中捕获超链的点击事件,用自定义的方法来替代Chromium原生的浏览器小窗口。
2. 在delphi中返回False给Js,或者在Js中直接return false,都可以阻止Chromium原生小窗口的打开。
JS
$(document).ready(function(){
$("a[target=_blank]").click(function(event){
var href = $(this).attr("href");
return app.doClickHyperlink(href);
//return false;
});
DELPHI
TTestExtension = class
class function doClickHyperlink(href: string): boolean;
end;
class function TTestExtension.doClickHyperlink(href: string): boolean;
begin
result:=ShellExecute(0, 'Open', PChar(href), nil,nil,1)<0; //返回False给JS,以阻止Chromium原生的浏览器小窗口。
end;
Chromimu与JS交互的测试的更多相关文章
- 李洪强iOS经典面试题147-WebView与JS交互
李洪强iOS经典面试题147-WebView与JS交互 WebView与JS交互 iOS中调用HTML 1. 加载网页 NSURL *url = [[NSBundle mainBundle] UR ...
- iOS与JS交互实战篇(ObjC版)
前言 ObjectiveC与Js交互是常见的需求,可对于新手或者所谓的高手而言,其实并不是那么简单明了.这里只介绍iOS7.0后出来的JavaScriptCore framework. 关于JavaS ...
- 【转】第4篇:Xilium CefGlue 关于 CLR Object 与 JS 交互类库封装报告:委托回调方法分析
作者: 牛A与牛C之间 时间: 2013-11-18 分类: 技术文章 | 暂无评论 | 编辑文章 主页 » 技术文章 » 第4篇:Xilium CefGlue 关于 CLR Object 与 JS ...
- 【转】3篇:Xilium CefGlue 关于 CLR Object 与 JS 交互类库封装报告:官方原生方法分析
作者: 牛A与牛C之间 时间: 2013-11-17 分类: 技术文章 | 暂无评论 | 编辑文章 主页 » 技术文章 » 第3篇:Xilium CefGlue 关于 CLR Object 与 JS ...
- [android] WebView与Js交互
获取WebView对象 调用WebView对象的getSettings()方法,获取WebSettings对象 调用WebSettings对象的setJavaScriptEnabled()方法,设置j ...
- WebView JS交互 JSBridge 案例 原理 MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- iOS下原生与JS交互(总结)
iOS开发免不了要与UIWebView打交道,然后就要涉及到JS与原生OC交互,今天总结一下JS与原生OC交互的两种方式. JS调用原生OC篇(我自己用的方式二,简单方便) 方式一 第一种方式是用JS ...
- Android应用开发 WebView与服务器端的Js交互
最近公司再添加功能的时候,有一部分功能是用的html,在一个浏览器或webview中展示出html即可.当然在这里我们当然用webview控件喽 WebApp的好处: 在应用里嵌套web的好处有这么几 ...
- c#两种方式调用google地球,调用COM API以及调用GEPLUGIN 与js交互,加载kml文件,dae文件。将二维高德地图覆盖到到三维谷歌地球表面。
网络上资源很多不全面,自己在开发的时候走了不少弯路,在这里整理了最全面的google全套开发,COM交互,web端交互.封装好了各种模块功能. 直接就可以调用. 第一种方式:调用COMAPI实现调用g ...
随机推荐
- c++11 输出时间
C++11中输出当前时间最直接的方法: std::time_t t2 = std::time(nullptr); cout << std::put_time(std::localtime( ...
- Unity3d中的属性(Attributes)整理
Attributes属性属于U3D的RunTimeClass,所以加上以下的命名空间是必须的了.其它倒没什么需要注意的.本文将所有运行属性过一遍罢了. using UnityEngine; using ...
- git-ftp代码部署方式
虽然如今ci方法已经在很多团队使用了,但对于一些个人性的基于PHP的跑在虚拟主机的小项目,既没有服务端的Git环境,又不想时刻跑一个Genkins,就只能回到原始的FTP上传了. 所幸有了git-ft ...
- debian系列下c++调用mysql, linux下面安装mysql.h文件
mysql.h的报错还没有解决,你们不用看了,等我解决了吧还不知道什么时候 先用c吧 #include <stdio.h> #include <stdlib.h> #inclu ...
- mysql之我们终将踩过的坑(优化)
一.EXPLAIN 做MySQL优化,我们要善用 EXPLAIN 查看SQL执行计划. 下面来个简单的示例,标注(1,2,3,4,5)我们要重点关注的数据 type列,连接类型.一个好的sql语句至少 ...
- SSH远程连接Linux配置
CentOS: 开启远程连接服务:service sshd start 添加到系统启动项:chkconfig sshd on 客户端工具:windows下连接工具putty ========= ...
- Ubuntu16.04安装xgboost
1.Python下安装方法 git clone --recursive https://github.com/dmlc/xgboost cd xgboost make -j4 cd python-pa ...
- java socket 服务器多线程 数据转发的研究实践
项目中借鉴了以下资料: https://www.cnblogs.com/whenever/p/5526420.html https://www.cnblogs.com/jpwz/p/5715852.h ...
- A股ROE连续3年超过15%的股票排名
R连续3年,12个季度的滚动ROE,都超过15%的股票排名,个股滚动ROE = 最近4个季度的归母净利润 / ((期初归母净资产 + 期末归母净资产) / 2). 查看更多ROE连续3年超过15%的股 ...
- 命名空间与Autoload
命名空间是为了防止函数名冲突 当php编译器找到未定义类时,就会自动去调用__autoload($class)这个函数,$class就代表这个未定义的类名相对于当前项目根目录所在路径 php5.3 ...