2016-09-20 11 views
1

私は単一のページアプリケーションを持っています。このアプリケーションでは、pdf.jsを使用して異なるpdfsを表示する別のページがあります一度pdf.jsを一度初期化すると、それぞれのインスタンスごとにこれらの設定が使用されるため、問題は継続しています。複数のpdf.jsインスタンス

私はpdf.jsオブジェクトを破棄し、これらのページに行くたびに新しいオブジェクトを作成できるようにします。これまで私は破壊メソッドを見つけることができなかった、私はPDFViewerApplicationを閉じて、キャンバスオブジェクトを削除しようとしましたが、私はまだこれらの問題を抱えています。

私が見たエラーのいくつかは、次のとおりです。 -Theオーバーレイがすでに -offsetParentが設定されていない登録されている -

+0

あなたはhttps://mozilla.github.io/pdf.js/を参照していますか?そう思う... – TylerY86

+0

コードのサンプルを提供してください。素朴な実装の前提の下で作業しようとします。 – TylerY86

答えて

1

最短答えをスクロールすることはできませんが、あなたの単一ページのウェブサイトはフレームを使用できるということです。

* { border: 0; margin: 0; padding: 0; overflow: hidden; } 
 
iframe { width: 100%; height: 50%; width: 100vw; height: 50vh; }
<iframe src="http://mozilla.github.io/pdf.js/web/viewer.html"></iframe> 
 
<iframe src="http://mozilla.github.io/pdf.js/web/viewer.html"></iframe>

JavaScriptのグローバルオブジェクトは、それぞれのフレームのWindowオブジェクトにバインドされ、互いに干渉しないことになります。

Mozillaの例を使用して、viewer.jsを変更して、場所のクエリ変数またはハッシュコンポーネントから引き出すことができます。 ?path=document123.pdfまたは#document123.pdfなどのパラメータを使用して、フレームのURLを作成します。

を削除すると、が1つ破棄されるだけで、フレームを破壊することができます。あなたが 1を操作に必要がある場合は、iframe elementcontentWindow(または(iframe.contentDocument || iframe.contentWindow.document))を使用して、フレームの内側(CORSXSSルール、securityは許可を...)に達することができます。

あなたが直接contentWindow経由で到達することができない場合は、postMessageを使用して信号を送受信するためのスクリプトを作成するか、単にフレームのスクリプトですべての作業を行うことができます。