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

わかりました、誰かが興味を持っているなら、私は魂を見つけました。

そのため、printPreview に入るときは、 、 、 、 の 5 つの関数を持つオブジェクトを渡す getSourceBrowser必要getPrintPreviewBrowsergetNavToolboxありonEnterますonExit

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 に答える