重新加载网页,同时在QT中重新加载javascript

时间:2014-04-03 14:28:06

标签: javascript jquery qt coffeescript qwebview

我有一个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 ] 信号。

0 个答案:

没有答案