我有一个QT-Application,它使用带有Javascript / Coffeescript和JQuery的网页与用户进行交互。在某些情况下,我需要重新加载javascript。
然而,在javascript的开头我设置了激活javascript方法的信号。
$ = jQuery
p =
rangeSliders: '#rangeSliders'
m =
init ->
d = $.extend {}, p
mm.connectBackend(d) if typeof StatusBridge is 'object'
mm =
connectBackend: (d) ->
StatusBridge.updateAirconLimit.connect (km) ->
log_debug "receiving aircon limit"
airconLimit = new KmItem
value: parseInt(km)
$(d.rangeSliders).rangeometer('getAirconLimit').trigger 'update', airconLimit
log_debug "receiving aircon limit done"
log_debug
只是通过内部日志系统打印一条消息。
如果出现错误,我会触发reload()
的{{1}}位置:
QWebView
和
bool WebPage::shouldInterruptJavaScript()
{
QApplication::processEvents( QEventLoop::AllEvents );
ECONNECT_LOG( Fatal, 108100004, "Javascript has permanent errors" );
emit requestReload();
return false;
}
在网页类之外的地方。
但是,无论何时重新加载网页,之后回调似乎都会被多次注册:
QObject::connect( m_webview->page(),
SIGNAL( requestReload() ),
m_webview,
SLOT( reload() ) );
有没有办法让QT重新加载HTML和Javascript部分?或者这是关于QT处理从C ++到javascript的绑定的方式吗?如果是这样,在崩溃的情况下重置网页的最佳方法是什么?
更新
因为这可能很重要:
我将C ++对象从插槽内部添加到javascript中,然后调用它来响应
2014-Mar-28 13:18:08;GuiBackend;4750;4750;D;108107022;../../src/Gui/StatusBridge.cc:221;Message from javascript: [ receiving aircon limit ]
2014-Mar-28 13:18:08;GuiBackend;4750;4750;D;108107022;../../src/Gui/StatusBridge.cc:221;Message from javascript: [ receiving aircon limit done ]
2014-Mar-28 13:18:08;GuiBackend;4750;4750;D;108107022;../../src/Gui/StatusBridge.cc:221;Message from javascript: [ receiving aircon limit ]
2014-Mar-28 13:18:08;GuiBackend;4750;4750;D;108107022;../../src/Gui/StatusBridge.cc:221;Message from javascript: [ receiving aircon limit done ]
2014-Mar-28 13:18:08;GuiBackend;4750;4750;D;108107022;../../src/Gui/StatusBridge.cc:221;Message from javascript: [ receiving aircon limit ]
2014-Mar-28 13:18:08;GuiBackend;4750;4750;D;108107022;../../src/Gui/StatusBridge.cc:221;Message from javascript: [ receiving aircon limit done ]
信号。