2013-05-07 120 views
0

因此,我在xulrunner中打开打印预览时遇到此问题。 我打开打印预览,但我无法获得导航工具栏。 这是PrintUtils.js在工具栏创建的代码:打印预览xulrunner

var XUL_NS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"; 
     printPreviewTB = document.createElementNS(XUL_NS, "toolbar"); 
     printPreviewTB.setAttribute("PrintPreview", true); 
     printPreviewTB.id = "print-preview-toolbar"; 
     printPreviewTB.className = "toolbar-primary"; 

后来它这样做:

var navToolbox = this._callback.getNavToolb 
    navToolbox.parentNode.insertBefore(printPreviewTB, browser); 

我提供navToolbox,这就是工具栏插入的地方但它不显示。正如我所说,打印预览打开完美,页面格式化,但没有工具栏。

任何人有任何想法为什么?

回答

0

好吧,如果有人感兴趣,我会发现菌落。

所以enternig打印预览时,你必须传递一个对象有5个功能: getSourceBrowsergetPrintPreviewBrowsergetNavToolboxonEnteronExit

With getNavToolbox您将要引用的工具栏(占位符)传递到要放置标准导航工具栏(打印按钮,缩放等)的位置。

我已经做了一切,但你必须绑定到该工具栏,就像这样:

toolbar.style.MozBinding = url('chrome://global/content/printPreviewBindings.xml#printpreviewtoolbar')"; 

我做的是,在功能的OnEnter。

但我也有问题从PrintUtils.jsenterPrintPreview功能。 在这部分代码:

var printPreviewTB = document.getElementById("print-preview-toolbar"); 
     if (printPreviewTB) {    
      printPreviewTB.updateToolbar(); 
      tmptoolbar.updateToolbar(); 
      var browser = this._callback.getPrintPreviewBrowser(); 
      browser.collapsed = false; 
      browser.contentWindow.focus(); 
      return; 
     } 

printPreviewTB.updateToolbar();引发错误。

我解决了这个问题,通过获取参考工具栏,我在getNavToolbox功能通过,然后要求他updateToolbar,像这样:

var printPreviewTB = document.getElementById("print-preview-toolbar"); 
     if (printPreviewTB) { 
      var tmptoolbar = this._callback.getNavToolbox();    
      tmptoolbar.updateToolbar(); 
      var browser = this._callback.getPrintPreviewBrowser(); 
      browser.collapsed = false; 
      browser.contentWindow.focus(); 
      return; 
     } 

而现在一切工作正常。