PhoneGap (Cordova 1.6) と ChildBrowser で Xcode 4 を使用しています。OSX で SiteCrawler を使用して、Web サイトを正常にダウンロードしてローカライズしました。画像、PDF などをローカルで完全に参照できます。すべてのローカライズされたサイト ファイルを PhoneGap www フォルダーに移動しました。アプリのテストは問題なくビルドされます。サイトは完全に閲覧可能です。
サイト上の PDF を独自のウィンドウで開くようにしたいのですが、ChildBrowser は私のニーズに合わせてこれを完璧に行います。http://blog.digitalbackcountry.com/2012/03/installing-the-childbrowser-plugin-for-ios-with-phonegapcordova-1-5/を使用して、ChildBrowser をインストールして動作させることができました - PDF ファイルを開いていますChildBrowser で。
私の問題は、上記のリンクを使用して、 ontouchstart="loadChildBrowser('/path/to/file.pdf'); return false;" を追加する必要があることです。サイト上のすべての PDF リンクに。CMS を使用しているため、これは大きな問題ではありません。大量の PDF は、CMS からデータが入力されたテンプレートから呼び出され、問題ありません。しかし、クライアントがアップロードされた PDF へのリンクをページのコンテンツに追加したサイトのページがいくつかあります。この場合、上記のコードをインライン リンクに簡単に追加する方法はありません。
jQueryを使用して、クリックするとページ上の各タグを確認し、クリックするとChildBroswerインスタンスを実行できると考えました。これは両方のタイプのPDFリンクをカバーしますが、うまくいかないようです。ここに私が持っているものがあります:
<script type="text/javascript" src="/a/js/cordova-1.6.0.js"></script>
<script type="text/javascript" src="/a/js/ChildBrowser.js"></script>
<script>
// install ChildBrowser
var cb = ChildBrowser.install();
//loading a web page in ChildBrowser
$('a[href$=pdf]').click(function() {
var href = $(this).attr('href');
cb.showWebPage(encodeURI(href));
return false;
});
</script>
インライン リンク JavaScript を使用せずに上記を使用すると、子ブラウザーなしで PDF が単独で開きます。
以下を ontouchstart="loadChildBrowser('/path/to/file.pdf'); return false;" と共に使用すると、子ブラウザーが開き、一部のリンクでは PDF が表示され、他のリンクでは単に読み込み中と表示されます。これはパスの微調整にすぎないと思いますが、機能させることができれば、上記が最も普遍的だと思います。
<script type="text/javascript" src="/a/js/cordova-1.6.0.js"></script>
<script type="text/javascript" src="/a/js/ChildBrowser.js"></script>
<script>
// install ChildBrowser
var cb = ChildBrowser.install();
//loading a web page in ChildBrowser
function loadChildBrowser(file) {
cb.showWebPage(encodeURI(file));
}
</script>