0

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

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,这是插入工具栏但不显示的地方。正如我所说,打印预览完美打开,页面格式化,一切都没有工具栏。

有人知道为什么吗?

4

1 回答 1

0

好的,如果有人感兴趣,我找到了解决方案。

因此,当 enternig printPreview 时,您必须传递一个具有 5 个函数的对象: getSourceBrowsergetPrintPreviewBrowsergetNavToolbox和。onEnteronExit

随着getNavToolbox您传递对工具栏(占位符)的引用,您希望在其中放置标准导航工具栏(带有打印按钮、缩放等)。

我已经完成了所有这些,但您必须绑定到该工具栏,如下所示:

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

我在 onEnter 函数中这样做。

但我也遇到了enterPrintPreview来自PrintUtils.js. 在这部分代码中:

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;
        }

现在一切正常。

于 2013-05-13T07:48:01.310 回答