QT Webkit 添加JS对象
2011-11-10 15:48
190 查看
由于QWebFrame 提供了一个addToJavaScriptWindowObject()接口, 所以在QT Webkit下添加一个自定义的
Javascript对象就变得非常的容易,要注意在跨页面的时候,该对象会被清除,所以你只要重新加回来
就可以了, 这一点跟GTK类似, 只要捕获WindowObjectCleared信号,在该信号处理函数里面执行
addToJavaScriptWindowObject()就可以了。
这种方法不用去修改Webkit的核心代码WebCore或者JavascriptCore, 所有工作都在应用层面实现,
可以说是简单又实用。
具体可以参考如下源代码:
HTML测试代码很简单:
<script>
QFoo.print("Hello world!");
</script>
Javascript对象就变得非常的容易,要注意在跨页面的时候,该对象会被清除,所以你只要重新加回来
就可以了, 这一点跟GTK类似, 只要捕获WindowObjectCleared信号,在该信号处理函数里面执行
addToJavaScriptWindowObject()就可以了。
这种方法不用去修改Webkit的核心代码WebCore或者JavascriptCore, 所有工作都在应用层面实现,
可以说是简单又实用。
具体可以参考如下源代码:
// 实现一个新类 class QFoo : public QObject { Q_OBJECT public: QFoo(QObject *parent) {} void initialize(QWebView *wv); public slots: void print(const QString &msg); private slots: void addObject(); private: QWebFrame *wf; }; void QFoo::initialize(QWebView *wv) { wf = wv->page()->mainFrame(); // Add to the javascript window object addObject(); // connect the signal for javascript window object cleared, which happened // at page switching etc. connect(wf, SIGNAL(javaScriptWindowObjectCleared()), this, SLOT(addObject())); } void QFoo::addObject() { wf->addToJavaScriptWindowObject(QString("QFoo"), this); } void QFoo::print(const QString &msg) { qDebug() << "Output the message " << msg; } // 测试主函数 int main(int argc, char *argv[]) { QApplication test(argc, argv); QWebView *wv = new QWebView(); QFoo *foo = new QFoo(wv); foo->initialize(wv); wv->setUrl(QUrl("foo.html")); wv->show(); return test.exec(); }
HTML测试代码很简单:
<script>
QFoo.print("Hello world!");
</script>
相关文章推荐
- GTK Webkit 添加JS对象
- GTK Webkit 添加JS对象
- GTK Webkit 添加JS对象
- js为Object对象动态添加属性和值
- js给对象标签添加事件&方法的封装
- js 声明数组和向数组中添加对象变量的简单实例
- c#winform中使用WebKit传递js对象实现与网页交互
- JS中为一个对象添加事件
- js学习(一)-动态添加、修改、删除对象的属性和方法
- JS动态为对象添加属性
- 遍历和添加json对象的属性 和 遍历普通js对象的属性
- js里面怎么动态的为对象添加属性
- JS对象添加新的字段
- js实现以最简单的方式将数组元素添加到对象中的方法
- js 对象动态添加属性、合并属性
- js给json对象添加、删除、修改属性
- 在js中为对象添加和删除属性
- js里面怎么动态的为对象添加属性
- js中为一个对象添加事件的正确方法
- JS动态给对象添加属性和值的实现方法