Используя javascript bridge QtWebkit, я создал класс для взаимодействия данных в моем веб-фрейме с остальной частью моего кода Qt. он распознает объект, но ни один из его методов.
//executed with main window constructor
void MainWindow::initJavascriptInterface(){
webInterfacer JSInterface;
QWebFrame *frame = ui->webView->page()->mainFrame();
frame->addToJavaScriptWindowObject("sender",&JSInterface);
}
В классе есть только один публичный слот с именем getInfo () (я знаю, что имя отстой, но оно для тестирования, я пробовал использовать разные имена функций на случай коллизии).
webinterfacer.h
#ifndef WEBINTERFACER_H
#define WEBINTERFACER_H
#include <QObject>
class webInterfacer : public QObject
{
Q_OBJECT
public:
explicit webInterfacer();
~webInterfacer();
public slots:
void getInfo();
signals:
//signal to emit when getInfo is called
void openPopup(QString,QString);
};
#endif // WEBINTERFACER_H
Я пробовал с другим содержимым в getInfo, даже пустой функцией, она никогда не распознается.
В моем HTML-заголовке (jQuery):
$(document).ready(function(){
if(window.sender){
alert("obj: " + typeof sender); //shows "obj: object"
alert("getInfo: " + typeof sender.getInfo); //shows "getInfo: undefined"
}
}