Chromium 嵌入式框架:使用“ExecuteFunctionWithContext”时创建对象失败

2024-01-18

Overview

我在 Delphi 2009 上使用 chromium 嵌入式框架(cef),它是最新版本。

Error

我可以用ExecuteFunctionWithContext成功执行 JavaScript 回调例程,我可以为其提供参数。 但是,当我尝试使用TCefv8ValueRef.CreateObject(nil); an 访问冲突发生在libcef图书馆。

假设

  1. 将参数推送到 JavaScript 回调适用于TCefv8ValueRef.CreateString和所有其他的Cefv8Value types.
  2. The TCefv8ValueRef.CreateObject(nil)当函数用作 chromium 扩展的返回值时,它可以正常工作。 (正如详细的/demos/guiclientDelphi CEF 演示)。
  3. The TChromium对象保存在主窗体上。

可能的解决方案和思考

  1. 我尝试过使用TCefv8ValueRef.CreateObject(nil); via an OnClick主窗体上的事件,这也产生了访问冲突。然而,TCefv8ValueRef.CreateString('test');会工作得很好。

任何帮助将不胜感激。


我在 C++ 上也遇到了同样的问题!我已经用以下代码解决了这个问题:

CefRefPtr<CefFrame> frame = browser->GetMainFrame();
CefRefPtr<CefV8Context> v8Context = frame->GetV8Context();
if (v8Context.get() && v8Context->Enter())
{
    CefRefPtr<CefV8Value> object = CefV8Value::CreateObject(NULL);
    // ExecuteFunctionWithContext and other actions

    v8Context->Exit();
}

chromiumembedded 文档包含以下内容:

因此,您应该在使用 javascript 模型进行操作之前打开正确的连接。 如果 V8 当前不在上下文中,或者需要检索和存储对上下文的引用,则可以使用两个可用的 CefV8Context 静态方法之一。 GetCurrentContext() 返回当前正在执行 JS 的框架的上下文。 GetEnteredContext() 返回 JS 执行开始的帧的上下文。例如,如果frame1中的函数调用frame2中的函数,则当前上下文将为frame2,输入的上下文将为frame1。

如果 V8 位于上下文内,则只能创建、修改数组、对象和函数,如果是函数,则只能执行它们。如果 V8 不在上下文内,则应用程序需要通过调用 Enter() 进入上下文,并通过调用 Exit() 退出上下文。 Enter() 和 Exit() 方法只能用于:

  1. 在现有上下文之外创建 V8 对象、函数或数组时。例如,当创建 JS 对象以响应本机菜单回调时。

  2. 在当前上下文以外的上下文中创建 V8 对象、函数或数组时。例如,如果源自frame1的调用需要修改frame2的上下文。

这就是为什么你无法创建对象但能够创建js字符串的原因。 你还可以看到一般用法示例 https://code.google.com/p/chromiumembedded/wiki/JavaScriptIntegration#General_Usage.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Chromium 嵌入式框架:使用“ExecuteFunctionWithContext”时创建对象失败 的相关文章

  • 阻止 IDE 自动添加使用单位

    我正在将 Lazarus 项目转移到德尔福西雅图 Lazarus 项目依赖于 40 多个单元 包括控件 并具有多种应用程序 在所有项目的使用条款中 他们使用了以下内容 uses Classes SysUtils Forms Controls
  • CharInSet 不适用于非英文字母?

    我已经将应用程序从 Delphi 2007 更新到 Delphi 2010 一切都很顺利 除了一条编译正常但不起作用的语句 If Edit1 Text 1 in S then ShowMessage Found else ShowMessa
  • Delphi XE7 Android 全屏(隐藏软键)

    如何在XE7中全屏显示 隐藏顶部 标题 和底部 软键 工具栏 在 XE6 中 我可以通过在应用程序部分写入来调整 AndroidManifest 以使我的应用程序全屏显示并且没有操作栏 android theme android style
  • 如何在表单上绘制半透明图像?

    我想在 Delphi 窗体上绘制半透明图像 但由于某种原因它不起作用 Here is the original PNG border is semi transparent 我将图像加载到TImage object Image1 Trans
  • Delphi:现场记录应用程序错误

    使用 Delphi 7 我想知道是否有一个免费组件可以在我的应用程序在远程站点运行时收集诊断信息并帮助我调试错误报告 也许它会记录每个选择的菜单项 单击的控件 文本输入等 也许它只是在崩溃时转储堆栈 也许它还有其他作用 我不介意添加代码 例
  • FireDac 添加下划线 1 以区分具有相同名称的 2 个列名

    我有一个连接 2 个表的选择 因此这些表中存在具有相似名称的列 因此现在在检索结果时 FireDac 将下划线 1 添加到第二个列名称以区分这两个表 Select from Table1 inner join Table2 on Table
  • (发件人:TObject)

    发件人 TObject 是什么意思 如 procedure TForm1 Button1Click Sender TObject var s Integer begin end Sender 是对触发事件的组件的引用 在这种情况下 Send
  • Delphi XE4 中是否可以更改应用程序短标题而不使其与项目 dpr 名称相同?

    我正在编写我的第一个由 delphi 驱动的 iPhone 应用程序 我已经创建了它 但我希望将其命名为 dpr 文件名称以外的名称 因为 dpr 文件不能包含空格 例如 EXE 名称并不总是与人们可能分配给应用程序的人类可读名称相同 而在
  • Delphi - 如何使用 iPhone 作为图片源通过 OpenDialog 获取目录

    我有一个 Delphi 应用程序 D2010 它允许用户通过 OpenDialog 选择 JPG 文件 当我从普通 Windows 目录中选择文件时 我的 TOpenDialog Filename 包含该文件的完整路径 并且我的代码可以正常
  • Chromium 中的 MP4 编解码器支持

    我们已将 Chromium 嵌入式框架集成到我们的 Windows 游戏中 以允许我们从应用程序内渲染网页 并且一切正常 除了 MP4 视频 据我所知 由于许可问题 Chromium 不包含此编解码器 但任何人都可以提供有关我们如何添加支持
  • Delphi 2005 Web 服务问题

    我在尝试通过 Delphi 访问 Web 服务时遇到问题 我使用了 2007 版 WSDLimp 工具的 java WSDL 看起来它已正确创建了所有对象 然而 当我制作一个调用该服务的测试程序时 每个对象都是空的 如果我在 HTTPRIO
  • 将字符串作为 PChar 从 CSharp 传递到 Delphi DLL

    我正在尝试将字符串从 C 传递到 Delphi 构建的 DLL Delphi DLL 需要 PChar 这是Delphi导出 procedure DLL Message Location PChar AIntValue integer st
  • 在 Delphi 中获取 TCheckbox 的总大小,包括框和文本

    我想获得 TCheckbox 的总大小 包括 Delphi 中的框和文本 我查看这篇文章Delphi FMX TCheckbox TRadiobutton 自动调整大小 https stackoverflow com questions 4
  • 新编译的应用程序需要 UAC/elevation?

    我有一个系统 我将其设置为普通的 UAC 并在我的 delphi 环境中编译名为 ka exe 的项目 并为其创建一个 installshield 项目 设置完毕 一切顺利 但每当我开始我的程序时 它都需要提升 而我不知道为什么 为了确保
  • 如何将IDL导入到Delphi中?

    我如何导入接口定义语言 idl 文件存入Delphi 将类型和接口转换为 pascal 文件 我试过了 File Open 它只显示 idl 文本文件的文本 Project 添加到项目 它只是 就像 添加了一个 idl文本文件到项目 成分
  • 如何使用 IdTCPClient 等待来自服务器的字符串?

    我的 IdTelnet indy 10 1 有问题 我无法以 Unicode 模式从服务器读取数据 现在我想用 IdTCPClient 编写 telnet 终端 服务器有时发送一行 有时发送越来越多的行 但发送之间没有固定的时间 现在我的问
  • Delphi XE5 FireDAC 错误:无法加载供应商库 [libmysql.dll 或 libmysqld.dll]

    我在 Windows 7 64 位上使用 Delphi XE5 只是尝试 FireDAC 组件 我正在使用一个 TFDConnection 组件连接到本地 MySQL 数据库 v5 6 15 我已经将 libmysql dll 32位 v5
  • 指针^ 与 s[1]

    在读取数据的函数中 数据含义只字符串 从磁盘 我应该更喜欢哪个 哪个更好 A DiskStream Read Pointer s Count or B DiskStream Read s 1 Count Note 我知道两者都有相同的结果
  • Delphi:如何计算大文件的 SHA 哈希值

    您好 我需要生成 5 Gig 文件的 SHA 您知道有一个非基于字符串的 Delphi 库可以做到这一点吗 你应该使用DCPcrypt v2 http www cityinthesky co uk cryptography html读取缓冲
  • 使用 (Object as TClass) 和 TClass(Object) 进行强制转换有什么区别

    有问题在哪里MyObj classnameis TMyClass classname 是真的并且TMyClass MyObj 有效但是 MyObj as TMyclass doSomething抛出转换错误 我真的不需要任何关于这些垃圾的帮

随机推荐

  • 在 WordPress 中按日期对帖子进行分组

    我需要编写一个 WordPress 查询来完成以下任务 我正在一个每天有 40 50 个帖子的网站上工作 我想显示按日期 分组 的帖子 e g 20 March 2012 post 1 post 2 post 3 19 March 2012
  • PostgreSQL 索引中的重复键

    我想将 OwnCloud 数据库移动到新服务器 但恢复期间操作失败 pg restore archive program db COPY failed for table oc storages ERROR value of a dupli
  • Pyspark 结构化流处理

    我正在尝试使用 Spark 制作一个结构化流应用程序 主要思想是从 kafka 源中读取 处理输入 写回到另一个主题 我已经成功地使 Spark 从 kafka 读取和写入 但是我的问题在于处理部分 我已经尝试使用 foreach 函数来捕
  • 如何正确查询 ManyToManyField 中列表(或另一个 ManyToManyField)中的所有对象?

    我对构建 Django 查询来检查是否的最佳方法感到困惑alla 的元素ManyToMany字段 或列表 存在于另一个字段中ManyToMany field 举个例子 我有几个Persons 可以拥有不止一种专长 还有Job人们可以开始 但
  • Google Cloud Dataflow 中的自动缩放功能未按预期工作

    我正在尝试在我的数据流作业中启用自动缩放 如中所述本文 https cloud google com dataflow service dataflow service desc autoscaling 我通过以下代码设置相关算法来做到这一
  • 使用 Google Maps API 添加标记功能

    我有以下 Javascript 其中包括标准 Google 地图 APIinitialize 功能与定制addMarker 功能 地图将正常加载 但标记不会添加到地图中
  • 使用 IErrorHandler 和 TCP Message Security 导致超时

    我有一个附加了自定义 IServiceBehavior 的 WCF 服务 用于在客户端返回特定错误 当我使用 TCP Message Security 启用此代码时 我收到服务超时 您可以在下面看到重现错误的完整客户端和服务器代码 服务器代
  • 在 Xcode 中构建和使用 DYLIB

    我正在尝试在 Xcode 中构建 dylib 目前 dylib 已构建 但是当我将 dylib 拖到另一个项目中并尝试 import dylib 中的标头之一 Seeker h 时 出现以下错误 没有这样的文件或目录Seeker h 没有这
  • CSS3 / HTML5 的盒子阴影不均匀?

    我正在尝试为网站创建不均匀的阴影效果 请参阅下面的示例来了解我需要实现的目标 不幸的是 我不认为这可以用 CSS3 来完成 据我所知 box shadow 属性只能用于创建均匀分布的阴影 然而 我对 CSS3 HTML5 的了解并不多 所以
  • 为什么我的 public void Constructor {} 无法编译?

    我有一项作业 要求银行帐户能够从支票和储蓄帐户转移资金 交易存储在 ArrayList 中 并由用户指定何时转移资金 用于支票和储蓄的银行帐户类工作正常 但我创建的 TransferService 类在 NetBeans 中无法正确编译 这
  • 我的 Mac OS X Mountain Lion 上有太多蟒蛇

    我不久前更新到了 Mountain Lion 之前使用过 python 现在我的电脑上安装了 8 个 是的 8 个版本的 python ls l System Library Frameworks Python framework Vers
  • 捕获Using块的目标对象的构造函数中抛出的异常

    using SomeClass x new SomeClass c temp test txt 在 using 块内 一切正常 可以正常处理异常 但是如果构造函数SomeClass可以抛出异常吗 将您的使用放入 try catch fe 中
  • 如何在没有数据库的情况下制作自定义表单 - DJANGO

    所以我想上传文件 但只发送到本地存储而不是数据库 但我不知道如何制作自定义表格 突然 这是我的 models py from django db import models class Audio store models Model re
  • 删除 SQL 中的每个备用行

    我需要清理一个包含三列的表 ID 唯一标识符 观察值 nvarchar 和时间戳 日期时间偏移 内容由两个传感器以 1 小时的间隔生成 并且两个传感器的 Observation 值相同 我的想法是做一个 SELECT 查询 例如 SELEC
  • 不允许任何人访问目录 .htaccess

    它可能很简单 但我找不到它 我想制作一个 htaccess 文件 这样任何人都无法进入该文件夹 除了服务器上的 php 之外 有谁知道代码行吗 谢谢 马蒂 You want Deny from all
  • 不同包中的类名相同

    同一类可以存在于多个包中吗 换句话说 我可以有Foo java上课于com test package1 and com test package2 Update 现在我从包 1 中复制了类并放入包 2 中 现在我正在创建该类的实例 我希望该
  • C# Regex.Split:删除空结果

    我正在开发一个应用程序 该应用程序导入数千行 其中每行的格式如下 9070183020 04 02 2011 107222 M S SUNNY MEDICOS GHAZIABAD 32 768 00 我正在使用以下Regex将行拆分为我需要
  • Apache2 Django NameError:名称“TypeError”未定义

    我试图通过 apache2 在 VPS 上运行 django 应用程序 但我在网站错误文件中收到以下内容 也是 400 错误请求 Exception ignored in
  • 可以使用 Python 标准库完成结构化日志记录吗?

    我最近读到了有关结构化日志记录的内容 here https stackify com what is structured logging and why developers need it 这个想法似乎不是通过将简单的字符串作为一行附加
  • Chromium 嵌入式框架:使用“ExecuteFunctionWithContext”时创建对象失败

    Overview 我在 Delphi 2009 上使用 chromium 嵌入式框架 cef 它是最新版本 Error 我可以用ExecuteFunctionWithContext成功执行 JavaScript 回调例程 我可以为其提供参数