所以我在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,这是插入工具栏但不显示的位置。正如我所说的,打印预览可以完美地打开,页面格式化,一切都可以,但没有工具栏。
有人知道为什么吗?
发布于 2013-05-13 15:48:01
好吧,我找到了解决方案,如果有人感兴趣的话。
因此,当输入printPreview时,你必须传递一个包含5个函数的对象:getSourceBrowser、getPrintPreviewBrowser、getNavToolbox、onEnter和onExit。
使用getNavToolbox,您可以将引用传递到工具栏(占位符),该工具栏是您想要放置标准导航工具栏(带有打印按钮、缩放等)的位置。
我已经完成了所有这些操作,但您必须绑定到该工具栏,如下所示:
toolbar.style.MozBinding = url('chrome://global/content/printPreviewBindings.xml#printpreviewtoolbar')";我在onEnter函数中执行此操作。
但我在使用PrintUtils.js的enterPrintPreview函数时也遇到了问题。在这部分代码中:
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;
}现在一切都正常了。
https://stackoverflow.com/questions/16413457
复制相似问题