菜鸟教程小白 发表于 2022-12-13 13:24:11

ios - 如何让 ChildBrowser 打开所有 PDF 文件


                                            <p><p>我正在使用带有 PhoneGap (Cordova 1.6) 和 ChildBrowser 的 Xcode 4。我已经在 OSX 上使用 SiteCrawler 成功下载了一个网站并将其本地化,并且可以在本地使用图像、PDF 等完全浏览它。我已将所有本地化的站点文件移动到 PhoneGap www 文件夹中,并且应用程序测试构建良好 -网站完全可以浏览。</p>

<p>我希望网站上的 PDF 在自己的窗口中打开,而 ChildBrowser 可以根据我的需要完美地做到这一点。使用 <a href="http://blog.digitalbackcountry.com/2012/03/installing-the-childbrowser-plugin-for-ios-with-phonegapcordova-1-5/" rel="noreferrer noopener nofollow">http://blog.digitalbackcountry.com/2012/03/installing-the-childbrowser-plugin-for-ios-with-phonegapcordova-1-5/</a>我能够安装并运行 ChildBrowser - 我在 ChildBrowser 中打开了 PDF 文件。</p>

<p>我的问题是使用上面的链接,我必须添加 ontouchstart="loadChildBrowser('/path/to/file.pdf'); return false;"到网站上的每个 PDF 链接。由于我们使用 CMS,这不是什么大问题 - 大部分 PDF 都是从模板调用的,其中数据是从 CMS 填充的,它们很好。但在网站的某些页面中,客户已将上传的 PDF 链接添加到页面内容中。在这种情况下,没有简单的方法将上述代码添加到内联链接中。</p>

<p>我想我可以使用 jQuery 在单击时查看页面上的每个标签,如果单击,则运行 ChildBroswer 实例,这将涵盖两种类型的 PDF 链接,但我似乎无法获得它工作。这是我所拥有的:</p>

<pre><code>    &lt;script type=&#34;text/javascript&#34; src=&#34;/a/js/cordova-1.6.0.js&#34;&gt;&lt;/script&gt;
    &lt;script type=&#34;text/javascript&#34; src=&#34;/a/js/ChildBrowser.js&#34;&gt;&lt;/script&gt;
    &lt;script&gt;

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

    //loading a web page in ChildBrowser
    $(&#39;a&#39;).click(function() {
      var href = $(this).attr(&#39;href&#39;);
      cb.showWebPage(encodeURI(href));
      return false;
    });
    &lt;/script&gt;
</code></pre>

<p>使用上面没有内联链接的 javascript,PDF 会自行打开,没有子浏览器。 </p>

<p>将下面的内容与 ontouchstart="loadChildBrowser('/path/to/file.pdf'); return false;"一起使用,子浏览器将打开,并且对于某些链接显示 PDF,而对于其他链接则只显示正在加载。我认为这只是对路径进行调整,但我认为如果可以使其工作,上述内容将是最通用的。</p>

<pre><code>    &lt;script type=&#34;text/javascript&#34; src=&#34;/a/js/cordova-1.6.0.js&#34;&gt;&lt;/script&gt;
    &lt;script type=&#34;text/javascript&#34; src=&#34;/a/js/ChildBrowser.js&#34;&gt;&lt;/script&gt;
    &lt;script&gt;

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

    //loading a web page in ChildBrowser
    function loadChildBrowser(file) {
      cb.showWebPage(encodeURI(file));
    }
    &lt;/script&gt;
</code></pre></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>通过反复试验,我能够在很大程度上完成这项工作。我仍然遇到了几个不相关的错误(嗯,与 Childbrowser 相关,但与加载本地 PDF 文件无关)。</p>

<p>所以,使用 ontouchstart="loadChildBrowser('/path/to/file.pdf'); return false;"在网站上所有指向 PDF 的链接上仍然是要走的路。改变的是我用来确定 PDF 路径并启动 ChildBrowser 的 JS 函数。我必须这样做:</p>

<pre><code>&lt;script type=&#34;text/javascript&#34; src=&#34;/a/js/cordova-1.6.0.js&#34;&gt;&lt;/script&gt;
&lt;script type=&#34;text/javascript&#34; src=&#34;/a/js/ChildBrowser.js&#34;&gt;&lt;/script&gt;
&lt;script&gt;

    // 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(&#39;/www/&#39;)+4;
      var trim = len-locleft;
      var left = path.slice(0,-trim);
      var locright = path.indexOf(&#39;/assets/&#39;);
      var trim = len-locright;
      var right = path.slice(-trim);
      var finalPath = left+right;
      cb.showWebPage(encodeURI(finalPath));
    }

&lt;/script&gt;
</code></pre>

<p>在我包含的头文件中(因此它位于网站上每个页面的头部)。问题是,当 ChildBrowser 提取文件的路径时,它会将正常站点的 Web 根目录 (/assets/documents/xxx.pdf) 下方的部分附加到当时在应用程序中查看的页面的完整路径,所以我最终得到:</p>

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

<p>当我们想要的时候:</p>

<p>/var/users/name/blah/blah/www/assets/documents/xxx.pdf</p>

<p>上面的脚本将 location.pathname 添加到从调用 ChildBrowser 的函数 (ontouch start) 传递的文件 var 中,以便我们以 </p> 结束

<p>/var/users/name/blah/blah/www/page.html/assets/documents/xxx.pdf(不正确)</p>

<p>然后将其拆分为左侧部分(/www 之前的所有内容)和右侧部分(包括/assets/和之后的所有内容),然后将它们连接起来(有效地删除所有站点目录和 html 文件信息),然后调用 ChildBrowser用那个finalPath。为我工作。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 如何让 ChildBrowser 打开所有 PDF 文件,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/10310519/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/10310519/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 如何让 ChildBrowser 打开所有 PDF 文件