CHROMIMU与JS交互的测试 好东西 谷歌浏览器 学习 研究

 http://blog.csdn.net/grassdragon/article/details/51659798

Chromimu与JS交互的测试

2016-06-13 18:30 55人阅读 评论(0) 收藏 举报
 分类:
Chrome

版权声明:本文为博主原创文章,未经博主允许不得转载。

测试一

为解决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交互的测试的更多相关文章

  1. 李洪强iOS经典面试题147-WebView与JS交互

    李洪强iOS经典面试题147-WebView与JS交互   WebView与JS交互 iOS中调用HTML 1. 加载网页 NSURL *url = [[NSBundle mainBundle] UR ...

  2. iOS与JS交互实战篇(ObjC版)

    前言 ObjectiveC与Js交互是常见的需求,可对于新手或者所谓的高手而言,其实并不是那么简单明了.这里只介绍iOS7.0后出来的JavaScriptCore framework. 关于JavaS ...

  3. 【转】第4篇:Xilium CefGlue 关于 CLR Object 与 JS 交互类库封装报告:委托回调方法分析

    作者: 牛A与牛C之间 时间: 2013-11-18 分类: 技术文章 | 暂无评论 | 编辑文章 主页 » 技术文章 » 第4篇:Xilium CefGlue 关于 CLR Object 与 JS ...

  4. 【转】3篇:Xilium CefGlue 关于 CLR Object 与 JS 交互类库封装报告:官方原生方法分析

    作者: 牛A与牛C之间 时间: 2013-11-17 分类: 技术文章 | 暂无评论 | 编辑文章 主页 » 技术文章 » 第3篇:Xilium CefGlue 关于 CLR Object 与 JS ...

  5. [android] WebView与Js交互

    获取WebView对象 调用WebView对象的getSettings()方法,获取WebSettings对象 调用WebSettings对象的setJavaScriptEnabled()方法,设置j ...

  6. WebView JS交互 JSBridge 案例 原理 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  7. iOS下原生与JS交互(总结)

    iOS开发免不了要与UIWebView打交道,然后就要涉及到JS与原生OC交互,今天总结一下JS与原生OC交互的两种方式. JS调用原生OC篇(我自己用的方式二,简单方便) 方式一 第一种方式是用JS ...

  8. Android应用开发 WebView与服务器端的Js交互

    最近公司再添加功能的时候,有一部分功能是用的html,在一个浏览器或webview中展示出html即可.当然在这里我们当然用webview控件喽 WebApp的好处: 在应用里嵌套web的好处有这么几 ...

  9. c#两种方式调用google地球,调用COM API以及调用GEPLUGIN 与js交互,加载kml文件,dae文件。将二维高德地图覆盖到到三维谷歌地球表面。

    网络上资源很多不全面,自己在开发的时候走了不少弯路,在这里整理了最全面的google全套开发,COM交互,web端交互.封装好了各种模块功能. 直接就可以调用. 第一种方式:调用COMAPI实现调用g ...

随机推荐

  1. ASP.NET Core Razor Pages

    Razor 页面是Asp.Net Core2.0新增的一个功能.Razor 页面是 ASP.NET Core MVC 的一个新特性,它可以使基于页面的编码方式更简单高效. 环境:vs2017 .net ...

  2. vue环境配置脚手架环境搭建vue工程目录

    首先在初始化一个vue项目之前,我们需要下载node.js,并且安装! 下载地址: nodejs.cn/download 安装完成之后,windows+r 运行命令 cmd  输入node -v  检 ...

  3. 【Unity】讯飞语音识别SDK

    1.进入讯飞官网,注册帐号,进入控制台,创建新应用UnityXunfeiDemo,平台选Android.在当前应用这点下载SDK,添加AI能力(添加新服务),选择语音听写,即可下载安卓SDK(下称讯飞 ...

  4. 教你一招:解决Windows 开机弹出AotuIt ERROR 错误

    AutoIt是个脚本语言,常被用于自动化安装.网络上有些系统镜像里含有AutoIt脚本,用于系统的自动配置.出现这种问题往往有两种可能的原因: 1)做系统的时候没搞好.这种情况就需要换一个镜像文件. ...

  5. Nginx 1.9+PHP5.6 环境搭建

    PHP5. 下载安装包 #wget http://mirrors.sohu.com/php/php-5.6.2.tar.gz #tar -zxf php-​ 安装php依赖的包​​ #yum inst ...

  6. 面向对象方法的重载(overloading)和覆盖(overriding)。

      在有些JAVA书籍中将overriding称为重载,overloading称为过载. Overloading在一个类中可以定义多个同名方法,各个方法的参数表一定不同.但修饰词可能相同,返回值也可能 ...

  7. java-信息安全(十一)-非对称加密算法ECC

    概述 信息安全基本概念: ECC算法(Elliptic curve cryptography,椭圆曲线密码学) ECC 椭圆加密算法(ECC)是一种公钥加密体制,最初由Koblitz和Miller两人 ...

  8. Angular4学习笔记(五)- 数据绑定、响应式编程和管道

    概念 Angular中的数据绑定指的是同一组件中控制器文件(.ts)与视图文件(.html)之间的数据传递. 分类 流向 单向绑定 它的意思是要么是ts文件为html文件赋值,要么相反. ts-> ...

  9. gradle教程 [原创](eclipse/ADT下 非插件 非Android Studio/AS)纯手打 第二篇:gradle简单实战

    一个bug 一个脚印的叫你们用gradle. 1介于网络上的很多资料都是老的 不适用与现在的新版本gradle 尤其是有些gradle方法改名了老的用不了 2介于网上都是粘贴复制并且零碎我很蛋疼啊,走 ...

  10. JPA实体类中常用的注解

    这两天在看黎活明老师的JPA的讲解视频,现在只了解这么多,记录备用. import java.util.Date; import javax.persistence.Basic; import jav ...