1

我正在使用 PhoneGap、Xcode、HTML 和 JavaScript 开发一个 iPhone 应用程序。我有一个 iFrame 应该查看已下载的文档(现在我正在使用测试文档而不是允许用户选择 - 稍后会出现)(再次,我选择了文档)。我尝试使用 iPhone 都支持的 .pdf 文件和 .docx 文件,但是单击我编码的按钮会在 Safari 而不是 iFrame 中打开它们。这是查看文档的代码(JavaScript 和 HTML);

    function viewOnline() {
        var site = "file://" + pathToRoot + "/editme.txt"
        $('#myIframe').attr('src', site);
    }

    <button onclick="viewOnline();">View Online</button></li>

    <iframe id="myIframe" style="width: 210; height: 210px;" seamless="seamless" src=""></iframe>

是无法在 iFrame 中查看 .pdf 等文件,还是我的代码有问题?

**pathToRoot在应用程序的其他地方进行了编码(并测试为正确) - 所以我不需要硬编码文件路径,当我将它传输到设备而不是模拟器时,它会改变。

**如果您需要我下载文件的代码,那么我可以给您-只需在下面评论

** 我对使用 Xcode 和 PhoneGap 也很陌生,所以如果我需要对它们进行一些更改,如果你能提供尽可能多的细节,那就太好了 - 提前非常感谢

编辑

我知道 OpenWhitelistURLsInWebView,并已启用它并允许我从 ExternalHosts 数组中下载的网站 - 但它仍然无法正常工作。

4

2 回答 2

2

这是不可能的。大多数移动浏览器都没有预装 Adob​​e 插件等。它不是你看到的桌面。它是一部手机。因此,除非您创建自己的浏览器并包含 adobe 插件,否则这是不可能的(这意味着您必须编写 pdf 再现逻辑,因为该插件无法在移动设备中运行)。

于 2013-03-07T10:25:52.393 回答
1

iFrame 很少需要,并且经常出于错误的原因使用。通常,您可以使用普通样式和更简单的标记来实现完全相同的目标。

此外,谷歌搜索 phonegap/cordova iframe 会给出许多说明 iFrame 存在问题的结果。有关它们的官方影响指南,请参阅iFrame Usage

在你的情况下,这些是你需要考虑的事情:

在 PhoneGap-iOS 上启用 iFrame 需要您将 iframe 域列入白名单并启用“OpenAllWhitelistURLsInWebView”。虽然这听起来不是问题,但许多应用程序希望在 MobileSafari(不是 ChildBrowser)中打开特定站点,当启用“OpenAllWhitelistURLsInWebView”时,这将无法轻松完成。

要更改 OpenAllWhitelistURLsInWebView,请在 Xcode 中打开 Cordova.plist 文件。

将域列入白名单。将其添加到 Cordova.plist 文件中的 ExternalHosts 数组。只需按 ExternalHosts 标题旁边的 +,当 item0 出现在下面时,将您的域添加到 value 部分(格式为 example.com)。

于 2013-03-07T10:27:20.783 回答