我将 Xcode 4 与 PhoneGap (Cordova 1.6) 和 ChildBrowser 一起使用。我在 OSX 上使用 SiteCrawler 成功下载了一个网站并将其本地化,它可以在本地使用图像、PDF 等完全浏览。我已将所有本地化的站点文件移动到 PhoneGap www 文件夹中,并且应用程序测试构建良好 -网站完全可以浏览。
我希望网站上的 PDF 在他们自己的窗口中打开,而 ChildBrowser 可以根据我的需要完美地做到这一点。使用http://blog.digitalbackcountry.com/2012/03/installing-the-childbrowser-plugin-for-ios-with-phonegapcordova-1-5/我能够安装并运行 ChildBrowser - 我打开了 PDF 文件在子浏览器中。
我的问题是使用上面的链接,我必须添加 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>