有什么方法可以将Qt中的QtWebKit浏览器中运行的JavaScript对象/函数暴露给JavaScript吗?可以将ActionScript对象暴露给Adobe AIR中的WebKit浏览器内运行的JS代码 - 我正在寻找Qt中的类似功能。在Qt中将C++对象暴露给Javascript
回答
是的。看看this.这应该是一个好的开始。
编辑:链接工作,但以防万一链接由理查德·穆尔 AGAIN [Link]游...
一个问题我见过拿出数倍于#qt和QT-兴趣如何 将自定义(特定于应用程序)的API添加到默认情况下在 QtWebKit中可用的API。这实际上很简单(一旦你知道如何),因为我会在下面显示 。这篇文章将展示一个简单的例子,介绍如何从javascript创建一个对象 ,包括调用对象的方法并返回C++中的值 。
有你真的需要为了执行这个 集成知道两件事情,第一是 QWebFrame的addToJavaScriptWindowObject()方法,这允许将指定的QObject从 的JavaScript可见。您需要知道的第二件事是,以这种方式发布在 中的对象每次清除javascript窗口对象时都会消失 - 即 即。每次用户导航到新页面时。为了防止这种问题导致 问题,QWebFrame提供一个信号,告诉你何时清除对象 ,允许您重新添加自定义API。这实际上比起听起来要简单得多 !
这样做的核心是在例如两个方法真正落实,他们 如下图所示:
void MyApi::setWebView(QWebView *view)
{
QWebPage *page = view->page();
frame = page->mainFrame();
attachObject();
connect(frame, SIGNAL(javaScriptWindowObjectCleared()), this, SLOT(attachObject()));
}
void MyApi::attachObject()
{
frame->addToJavaScriptWindowObject(QString("MyApi"), this);
}
此代码是所有你需要为了让所有的公共插槽的 MyApi对象对javascript可见。该MyApi类提供了两个公共插槽:(!是的,插槽可以返回的东西)
public slots:
void doSomething(const QString ¶m);
int doSums(int a, int b);
第一个插槽只是消息记录到调试输出,第二个返回 它的两个参数的总和。他们被称为 从JavaScript这样的:
MyApi.doSomething('Hello from JS page 2!!!!');
sum = MyApi.doSums(2, 3);
alert('C++ says the sum is ' + sum);
而这一切就是这么简单!您可以从>http://xmelegance.org/devel/qtwebkitextension.tar.gz下载代码。
不幸的是,这个例子在QT5中不起作用。有任何更新的机会,或者我应该再打开一个问题吗? – Alex 2015-05-11 20:41:36
- 1. 将C#对象暴露给Lua脚本
- 2. 将复杂的C++ Qt对象暴露给QML
- 3. 将C++ API暴露给C#
- 4. 如何将java对象暴露给LuaJ
- 5. 将C++类暴露给QML
- 6. 如何将.net对象暴露给远程C++客户端
- 7. DTSearch COM Interop - 如何将对象暴露给C#?
- 8. 无法将QtQuick2对象暴露给Qt中的嵌入html android 5.7
- 9. 将C++库暴露给Python + PIL
- 10. 将网址暴露给webservice
- 11. 通过WebScriptObject将可可对象暴露给JS脚本环境
- 12. 如何将对象暴露给我的所有Struts2视图?
- 13. 将属性暴露给Silverlight中的Intellisense
- 14. Javascript:暴露在IIFE中定义的全局对象
- 15. 如何在Cython模块中将#defined C值暴露给Python?
- 16. 将COM对象暴露给在Wine/Linux中运行的应用程序
- 17. 将C++常量暴露给虚幻中的蓝图
- 18. 将非托管C++类库暴露给c#
- 19. 将关系模型暴露给backgrid.js
- 20. 将您自己的API暴露给YQL
- 21. 将django admin暴露给用户。有害?
- 22. SailsJS将数据暴露给客户端
- 23. 将EF Model暴露给各种客户
- 24. 将变量暴露给Google Analytics
- 25. 将属性暴露给Spark皮肤类
- 26. 将COM事件暴露给VBScript(ATL)
- 27. UIWebView的目标C暴露于JavaScript的
- 28. 将方法中定义的对象暴露给另一个方法
- 29. 暴露数据对象的警告
感谢您的信息! – BlueSilver 2010-04-30 08:19:40