2012-04-25 4 views
2

PhoneGap(Cordova 1.6)とChildBrowserでXcode 4を使用しています。私はOSXでSiteCrawlerを使用してウェブサイトを正常にダウンロードしてローカライズし、画像、PDFなどを使って完全にブラウズすることができました。ローカライズされたサイトファイルをPhoneGap wwwフォルダに移動し、サイトは完全に閲覧可能です。ChildBrowserですべてのPDFファイルを開く方法

サイト上のPDFを自分のウィンドウで開くようにしたいのですが、ChildBrowserはこれを私の必要性に完全に対応させます。 http://blog.digitalbackcountry.com/2012/03/installing-the-childbrowser-plugin-for-ios-with-phonegapcordova-1-5/を使用してChildBrowserをインストールして動作させることができました - 私はChildBrowserでPDFファイルを開いています。

私の問題は、上記のリンクを使用すると、私はontouchstart = "loadChildBrowser( '/ path/to/file.pdf'); return false;を追加する必要があります。サイト上のすべてのPDFリンクに私たちはCMSを使用しているので、これはあまり問題ではありません。つまり、大量のPDFは、CMSからデータが入力されたテンプレートから呼び出され、うまくいきます。しかし、サイトには、クライアントがアップロードされたPDFへのリンクをページのコンテンツに追加したページがいくつかあります。この場合、上記のコードをインラインリンクに簡単に追加する方法はありません。

jQueryを使用して、クリックしたときにクリックされたときにページの各タグを見ることができ、ChildBroswerインスタンスを実行すると、これは両方のタイプのPDFリンクに適用されますが、働く私が持っているものは次のとおりです。

上記のインラインリンクのjavascriptを使用しない場合、PDFは子ブラウザなしで単独で開きます。

ontouchstart = "loadChildBrowser( '/ path/to/file.pdf'); return false;"と一緒に使用すると、子ブラウザが開き、リンクによってはPDFが表示されます。 。私はこれが道のりを変えるだけだと思っていますが、もしこれを働かせることができれば、上記が最も普遍的になると思います。

<script type="text/javascript" src="https://stackoverflow.com/a/js/cordova-1.6.0.js"></script> 
    <script type="text/javascript" src="https://stackoverflow.com/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> 

答えて

3

私は試行錯誤を経て、ほとんどの場合この機能を得ることができました。私はまだ無関係なバグのいくつかを打っています(Childbrowserに関連していますが、ローディングはローカルPDFファイルになりません)。

したがって、ontouchstart = "loadChildBrowser( '/ path/to/file.pdf');を使用してfalseを返します。サイト上のPDFへのすべてのリンクでは、まだ行く方法です。変更された点は、PDFへのパスを決定し、ChildBrowserを起動するために使用しているJS関数でした。 (それは、サイト上のすべてのページの先頭に住んでいる)私の含まれるヘッダ・ファイルで

<script type="text/javascript" src="https://stackoverflow.com/a/js/cordova-1.6.0.js"></script> 
<script type="text/javascript" src="https://stackoverflow.com/a/js/ChildBrowser.js"></script> 
<script> 

    // install ChildBrowser 
    var cb = ChildBrowser.install(); 

    //loading a web page in ChildBrowser 
    function loadChildBrowser(file) { 
     var path = location.pathname+file; 
     var len = path.length; 
     var locleft = path.indexOf('/www/')+4; 
     var trim = len-locleft; 
     var left = path.slice(0,-trim); 
     var locright = path.indexOf('/assets/'); 
     var trim = len-locright; 
     var right = path.slice(-trim); 
     var finalPath = left+right; 
     cb.showWebPage(encodeURI(finalPath)); 
    } 

</script> 

:私はこれをしなければなりませんでした。問題は、ChildBrowserがファイルへのパスをプルアップしたときに、通常のサイトのWebルート(/assets/documents/xxx.pdf)の下の部分を、その時点でアプリで表示されているページのフルパスに追加していたことです我々が望んでいたとき

/var/users/name/blah/blah/www/page.html/assets/documents/xxx.pdf

:ので、私はなってしまった

の/ var/

上記のスクリプトは、ChildBrowserを呼び出す関数(ontouch start)から渡されたファイルvarにlocation.pathnameを付加しています。最終的には

/var/users/name/blah/blah/www/page.html/assets/documents/xxxになります。pdf(正しくない)

それを左のセクション(/ wwwの前のすべて)と右のセクション(すべてを含む、after/assets /)に分割して連結します。情報)を呼び出し、そのfinalPathでChildBrowserを呼び出します。私のために働く。

関連する問題