Javascript Can';t在iFrame中打开.PDF或.DOC(X)

Javascript Can';t在iFrame中打开.PDF或.DOC(X),javascript,html,cordova,iframe,Javascript,Html,Cordova,Iframe,我正在使用PhoneGap、Xcode、HTML和JavaScript开发一个iPhone应用程序。我有一个iFrame,可以查看已下载的文档(现在我使用的是一个测试文档,而不是允许用户选择(稍后将进行选择)(同样,我选择了文档)。我尝试使用iPhone支持的.pdf文件和.docx文件,但单击我编码的按钮会在Safari而不是iFrame中打开它们。下面是查看文档的代码(JavaScript和HTML) 函数viewOnline(){ var site=“file://”+pathToRoot

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

函数viewOnline(){
var site=“file://”+pathToRoot+“/editme.txt”
$('myIframe').attr('src',site);
}
在线查看
是不能在iFrame中查看.pdf等文件,还是我的代码有问题

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

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

**我对使用Xcode和PhoneGap也相当陌生,所以如果我需要对它们进行修改,如果您能提供尽可能多的细节,那就太好了——提前感谢您

编辑


我知道OpenWhitelistURLsInWebView,并且启用了它并允许我从外部主机阵列中下载的网站-但它仍然无法工作。

这是不可能的。大多数移动浏览器都没有预装Adobe插件。你看到的不是桌面。这是一部手机。因此,除非您创建一个自己的浏览器并包含adobe插件(这意味着您必须编写pdf格式副本逻辑,因为该插件在移动设备中无法工作),否则这是不可能的。

iFrame很少需要,而且常常因为错误的原因而使用。通常,使用普通样式和更简单的标记可以实现完全相同的效果

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

在您的情况下,您需要考虑以下事项:

在PhoneGap iOS上启用iFrame需要将 iframe域并启用“OpenAllWhitelistURLsInWebView”。而这 听起来不是问题,许多应用程序都想打开特定的 MobileSafari(非儿童浏览器)中的站点,不能 启用“OpenAllWhitelistURLsInWebView”后,即可轻松完成

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

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


iPhone可以很好地呈现pdf文档。由于cordova本质上是xcode项目中的一个网络视图,我看不出这有什么理由不起作用?@MartinSommervold:对不起,我是从droid的角度考虑的。此外,我还没有真正尝试过iPhone中的任何文件协议。我见过OpenAllWhitelistURLsInWebView,但我启用了它,并将它放在了我下载的网站上,但它仍然不起作用——这就是我问的原因。对不起,我应该把它放进去。我现在就编辑它
    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>