有什麼方法可以將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. Qt在C++中創建對象並暴露給QML
- 3. 將複雜的C++ Qt對象暴露給QML
- 4. 替代v8以將C++對象暴露給JavaScript(在PowerPC上)
- 5. 將C++ API暴露給C#
- 6. 如何將java對象暴露給LuaJ
- 7. 將C++類暴露給QML
- 8. Golang Otto JS - 將主機對象暴露給JavaScript
- 9. 如何將.net對象暴露給遠程C++客戶端
- 10. DTSearch COM Interop - 如何將對象暴露給C#?
- 11. 如何將C#元組暴露給C++
- 12. 無法將QtQuick2對象暴露給Qt中的嵌入html android 5.7
- 13. 將c#DLL暴露給VB6時出錯
- 14. 將C++庫暴露給Python + PIL
- 15. 將網址暴露給webservice
- 16. 將.NET暴露給COM
- 17. 如何將對象暴露給我的所有Struts2視圖?
- 18. 如何將對象傳遞給暴露的luaj函數?
- 19. 通過WebScriptObject將可可對象暴露給JS腳本環境
- 20. 將屬性暴露給Silverlight中的Intellisense
- 21. Javascript:暴露在IIFE中定義的全局對象
- 22. 如何在Cython模塊中將#defined C值暴露給Python?
- 23. Angular中暴露的Class對象
- 24. 將COM對象暴露給在Wine/Linux中運行的應用程序
- 25. DDD CQRS ES - 域對象現在已暴露給表示層?
- 26. C++/CLI從本地C++類繼承抽象方法並將其暴露給C#
- 27. 將XPCOM組件暴露給網頁中的javascript
- 28. 將C++常量暴露給虛幻中的藍圖
- 29. 將非託管C++類庫暴露給c#
- 30. 如何將攔截器暴露給JMX?
感謝您的信息! – BlueSilver 2010-04-30 08:19:40