Javascript + iPhone 在对话框中打开文件

标签 javascript iphone html mobile sencha-touch

我正在开发一个应用程序,供我们的员工用于随时随地跟踪票证。我们的票证有时会存储各种文件类型的附件。

其中许多是我们软件中的错误的文本文件或图像,这些对于在旅途中查看票证时的票证至关重要

在 Javascript 中,如何让 Web 浏览器提示用户“您想用什么打开此文件?”对话?非常类似于以下内容:

iPhone open file in dialog

我什至不知道这是否可以通过 Javascript 实现,但如果可以的话,这确实会对我们有很大帮助

我知道我们可以直接在 Javascript 中显示图像,但我们更愿意将文件推迟到设备并让它使用正确的程序打开它(如果文件类型不是图像)

哦,我们正在为应用程序使用 Sencha Touch,以防提供此类功能(尽管我在文档中找不到任何功能)

最佳答案

使用应用程序打开:

  • 选择 Info-plist 文件
  • 右键单击 plist 文件
  • 打开为...并选择源代码
  • 将此 xml 代码粘贴到文件中的某个位置下方(例如,我将其放置在包名称下方)

<key>CFBundleDocumentTypes</key>
<array>
    <dict>
        <key>CFBundleTypeName</key>
        <string>supportedExtensions</string>
        <key>CFBundleTypeRole</key>
        <string>Viewer</string>
        <key>LSHandlerRank</key>
        <string>Alternate</string>
        <key>LSIsAppleDefaultForType</key>
        <true/>
        <key>LSItemContentTypes</key>
        <array>
            <string>public.comma-separated-values-text</string>
        </array>
    </dict>
</array>
  • 转到应用委托(delegate)文件并实现以下功能:

-(BOOL) application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
    // this url contain the -> your file url
}

请记住:应用程序内存的处理由您决定。该文件将被复制到您的应用程序文档目录空间中。您需要管理它。如果您不再需要该文件,您的应用程序将需要删除它。

用JS读取文件:

在您的 JavaScript 中实现以下内容:

window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS, fail);

function gotFS(fileSystem) {
    fileSystem.root.getFile("exportBHC.csv", {create: true}, gotFileEntry, fail);
}

function gotFileEntry(fileEntry) {
    fileEntry.file(gotFile, fail);
}

function gotFile(file){
    readAsText(file);
}

function readAsText(file) {
    var reader = new FileReader();

    reader.onloadend = function(evt) {
        var sqlQuery = {};
        var results = evt.target.result;
}

关于Javascript + iPhone 在对话框中打开文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11128920/

相关文章:

javascript - 在视频上添加播放按钮、h1、P

javascript - 要求浏览器探测另一个站点上的数据

JavaScript:如何获取用户选择,并在选择前后插入标签?

javascript - nodejs操作后断开mongoose连接

ios - 尝试在写事务之外修改对象

iphone - CGBitmapContextCreate 的内存使用率非常高

ios - Realm - 列表与结果。速度和尺寸

java - 解析jsoup url android

javascript - 如何在不在列表项之间创建空白垂直空间的情况下将单个列表(不同的文本长度)分成两个相等的列?

javascript - 标签占位符