EditDocument并不总是在Chrome中运行

时间:2014-06-20 08:12:53

标签: google-chrome webdav ithit-ajax-file-browser

我遇到与MicrosoftOfficeEditDocument didn't work in Chrome类似的问题。

我确实按照答案中的说法下载了更新的库,它适用于Office 2013但不适用于2010。 在Office 2010中,我有一些文件可以打开而另一些文件没有,它们并不总是相同的。我试过.doc,.docx,.ppt,.pptx,.xls和.xlsx。

我用以下内容调用编辑文档fonction: ITHit.WebDAV.Client.DocManager.EditDocument(sDocumentUrl, javaAppletFilePath);

编辑:

它实际上似乎是文件网址长度的问题。当我的文件url(sDocumentUrl)长于我调用EditDocument的脚本url的长度时,它完全正常。但是当它更短时,脚本url的结尾会在sDocumentUrl之后添加,这会使调用失败。这只发生在Chrome和Office 2010上。

任何使这项工作的方法?

1 个答案:

答案 0 :(得分:0)

'\0'添加到网址末尾

'\0'(null)添加到要传递给MicrosoftOfficeEditDocument()的字符串的末尾。像MicrosoftOfficeEditDocument(path + '\0');一样。此外,您应该使用MicrosoftOfficeEditDocument()而不是EditDocument(),因为EditDocument()将尝试调用JavaEditDocument(),因为空终止字符串。

这是从这里采取的解决方案 - https://code.google.com/p/chromium/issues/detail?id=269183#c5

了解更多信息 - opening webdav files in Chrome via the Office Authorization plug-in for NPAPI browsers fails for certain files

首先检查ActiveX

但是,当'\0'通过SharePoint.OpenDocument ActiveX对象打开文档时,不应将MicrosoftOfficeEditDocument()添加到路径中,否则ActiveX插件将无法通过扩展名识别文件格式并尝试例如,通过undefined:ofe|u|而不是ms-word:ofe|u|打开文档。为此,您应在追加'\0'之前检查ActiveX。

if (!('ActiveXObject' in window)) {
    path = path + '\0';
}

ITHit.WebDAV.Client.DocManager.MicrosoftOfficeEditDocument(path)

警告:此解决方案会破坏Firefox中的MicrosoftOfficeEditDocument。 Firefox不喜欢\0终止的字符串。