Russian Qt Forum

Qt => Qt Script, QtWebKit => Тема начата: kna от Сентябрь 18, 2014, 18:19



Название: QtWebkit и undefined
Отправлено: kna от Сентябрь 18, 2014, 18:19
Приветствую! Ситуация следующая: имеется QWebView, добавляю в него js объект:
Код:
...
page()->mainFrame()->addToJavaScriptWindowObject("window.obj", new Obj);
...

Часть объявления Obj:
Код:
class Obj: public QObject {
Q_OBJECT
Q_PROPERTY(QString prop READ prop)
public:
QString prop() const;
protected:
QString m_prop;
...
}
Q_DECLARE_METATYPE(Obj)
Q_DECLARE_METATYPE(Obj*)

Так вот, мне нужно в движке браузера вернуть undefined, к примеру:
Код
Javascript
window.obj.prop === ''; // true
window.obj.prop === undefined; // false (что характерно, а нужно чтобы было наоборот)
 

Смотрел в сторону QJSValue, получилось бы что-то вроде
Код:
class Obj: public QObject {
Q_OBJECT
Q_PROPERTY(QJSValue prop READ prop)
public:
QJSValue prop() const;
protected:
QJSValue m_prop;
...
}
Q_DECLARE_METATYPE(Obj)
Q_DECLARE_METATYPE(Obj*)

QJSValue Obj::prop() {
return QJSValue(QJSValue::UndefinedValue);
}
Конечно же такое не сработало
Код
Javascript
typeof window.obj.prop; // 'string'
window.obj.prop === ''; // true
 
Или если так:
Код:
QJSValue Obj::prop() {
return QJSValue("I'm empty");
}
Код
Javascript
typeof window.obj.prop; // 'string'
window.obj.prop === ''; // true, не то что надо
 

Похоже что JSC в QtWebkit не в курсе об QJSValue. Нужна обертка? Что делать? ???


Название: Re: QtWebkit и undefined
Отправлено: vipet от Октябрь 01, 2014, 14:21
Код:
...
page()->mainFrame()->addToJavaScriptWindowObject("window.obj", new Obj);
...


надо не "window.obj" передавать, а просто "obj"