- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
Awesomium 很容易允许 C++ 代码调用 Javascript 方法,但我还没有找到关于它是否可以做相反事情的明确答案。 This site似乎说可以,但是查看文本和示例并没有启发我。
所以,我正在寻找一个明确的答案:我能否在我的 Javascript(Jquery) 中调用 C++ 变量/方法?
如果您能提供一个简单的示例,我们将不胜感激。
谢谢!
最佳答案
你绝对可以——你只需要使用委托(delegate)/函数指针在 WebView::setObjectCallback 和 WebViewListener::onCallback 之上构建一个额外的层。
我编写了一个快速的 JSDelegate.h 类 ( view it here ),您可以使用它来将“onCallback”事件直接连接到 C++ 成员函数。
基本思想是维护回调名称到委托(delegate)的映射:
typedef std::map<std::wstring, Awesomium::JSDelegate> DelegateMap;
DelegateMap _delegateMap;
并从您的 WebViewListener::onCallback 调用相应的函数:
void MyListener::onCallback(Awesomium::WebView* caller, const std::wstring& objectName,
const std::wstring& callbackName, const Awesomium::JSArguments& args)
{
DelegateMap::iterator i = _delegateMap.find(callbackName);
if(i != _delegateMap.end())
i->second(caller, args);
}
然后,每次您希望绑定(bind)一个特定的 C++ 函数时,您可以这样做:
// Member function we wish to bind, must have this signature for JSDelegate
void MyClass::myFunction(Awesomium::WebView* caller, const Awesomium::JSArguments& args)
{
// handle args here
}
// Instantiate MyClass instance in C++
MyClass* myClass = new MyClass();
// Create corresponding 'MyClass' object in Javascript
webView->createObject(L"MyClass");
// Do the following for each member function:
// Bind MyClass::myFunction delegate to MyClass.myFunction in JS
_delegateMap[L"myFunction"] = Awesomium::JSDelegate(myClass, &MyClass::myFunction);
webView->setObjectCallback(L"MyClass", L"myFunction");
然后,您应该能够像这样直接从 Javascript 调用 MyClass::myFunction:
MyClass.myFunction("foo", 1, 2 3)
希望对您有所帮助!我没有测试任何代码,但我用 Awesomium v1.6 RC4 SDK 编写了它记在心里。
关于javascript - Awesomium 是否允许我在 JS 中调用/使用 C++ 变量/方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5553734/
我们正在将 Awesomium ( http://awesomium.com/ ) 用于一个新项目。 问题是在 JavaScript 中将一些数据保存在 localStorage 中时,它不是持久的。
我似乎找不到使用用户名和密码(http/socks4)的代理的方法。任何输入都会很棒:) 我正在使用 .net 包装器,但我想这没有任何区别。 谢谢, 约翰 最佳答案 您需要处理 WebControl
我是一名从事 Angular Awesomium 项目的 JS 开发人员 - 是否有人对如何使用 Awesomium Inspector 启用 console.log() 有明确的答案,这对我来说是必
我之前问过这个问题,但我想重新表述一下这个问题。我正在尝试为我的项目制作一个刮刀。我想让它显示链接的特定部分。链接中唯一发生变化的部分是数字。这个数字就是我想要抓取的。该链接如下所示: 如前所述,我
我用 awesomium 创建了一个 wpf 网络浏览器,但网页看起来不像 chrome 和其他浏览器那样清晰。我使用的是 visual c#。有人可以帮我解决这个问题吗? 最佳答案 在 1.6 分支
我刚开始使用 awesomium。我想了解如何更改用户代理和引荐来源网址。例如,我需要初始化 5 个 istance o awesomium webcontrol,对于它们中的每一个,我都需要不同的用
Javascript/HTML function configurator(clicked) { myGlobalObject.onLinkClicked(clicked.name);
我想用 C# 和 Awesomium 编写一个应用程序,以记住用户已登录该网站。为此,我使用以下代码: private void button1_Click(object sender, EventA
我在我的 wpf 应用程序中使用 Awesomium 浏览器控件。它从 url 加载网站,但我有问题。我的网站有一些目标为空白的 anchor 链接。但是当我单击该 anchor 标记时,没有任何反应
默认情况下,WPF 应用程序中的 awesomium 不支持缩放和平移的触摸事件: browserLeft.StylusDown += browserLeft_StylusDown; brow
所以我一直在尝试在我的一个副项目(C#,WPF 项目类型)中使用 IE 以外的东西作为我的 webcontrol,我一直在寻找替代方案并且在过去尝试过但未能实现它们. 我决定再试一次并实现 aweso
我想在我的 WPF 应用程序中使用 Awesomium 作为嵌入式网络浏览器。 我已经尝试安装最新的 Awesomium SDK (1.6.3b),以及之前的两个版本(1.6.2 和 1.6.1)。在
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 1 年前。
我正在使用 Awesomium 创建一个 headless 浏览器。我希望浏览器返回网络错误代码,所以我知道它是如何/为什么会中断的。 using (WebSession session = WebC
Go Home 我试图让Awesomium点击某个按钮,以上面的例子为例,没有ID只有一个标签 它可能没有 click()方法。 您可以尝试以下方法来检查: JSObject btn = web
我有一个 tabcontrol,在 tabcontrol 中我有两个 tabitem,它们都包含一个 awesomium Webcontrol。然而,经过一段时间的随机时间后,Webcontrols
大家好, 我正在用类中的 awesomium webcontrol 制作一个 Winform 项目。我将该控件导航到 http://www.google.com/(仅用于测试)并向其添加了一个 Doc
有没有办法在 webControl 中将 html 作为字符串加载? 类似于: webControl.Load("..."); 就像在普通的 wpf webControl 中使用的那样: webCon
我正在尝试使用外部 javascript 文件中的函数,这些文件包含在我的 html 页面中,带有“script”标签。直接在 html 页面中实现的 Javascript 函数似乎可以正常工作,但外
在这段代码中我得到了所有人的数量。这有效。现在我想从所有人中随机选出一个人,但这行不通。我在 using (person) 行收到一个 Microsoft.CSharp.RuntimeBinder.R
我是一名优秀的程序员,十分优秀!