2014-06-20 64 views
1

我遇到类似问题MicrosoftOfficeEditDocument didn't work in ChromeEditDocument并不总是在Chrome中工作

我没有下载更新后的库,如答案中所述,它适用于Office 2013,但不适用于2010年。 对于Office 2010,我有一些打开的文件,有些则不打开,它们并不总是同样的。我尝试使用.doc,.docx,.ppt,.pptx,.xls和.xlsx。

我打电话与编辑文档fonction: ITHit.WebDAV.Client.DocManager.EditDocument(sDocumentUrl, javaAppletFilePath);

编辑:

它实际上似乎是文件的URL的长度的问题。当我的文件url(sDocumentUrl)长于我在其中调用EditDocument的脚本url的长度时,它工作得很好。但是,当它更短时,脚本url的结尾会添加到sDocumentUrl之后,从而导致调用失败。这只会发生在Chrome和Office 2010上。

任何方式使这项工作?

+0

这是否一直为你发生?它有时适用于我,但有些时候它不起作用。有时如果我更改字符串文件URL中的一个字符,它会起作用。 – kavun

+0

不,它不一致。当我发布这个问题时,它并不经常工作,一次可以打开一个文件,之后打不开。 现在它似乎几乎所有的时间工作,除了.pptx不总是打开。 – cilmela

+0

它似乎工作正常,如果我第一次在IE中打开文件,然后在Chrome中。 – cilmela

回答

0

添加'\0'到URL

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

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

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

警告:该解决方案在Firefox打破MicrosoftOfficeEditDocument。 Firefox不喜欢\0已终止的字符串。

+0

不幸的是,我不能测试这个,因为我也使用sabredav,当我在文档的URL中添加'\ 0'时,它会打破所有情况。不过谢谢你的解决方案。 – cilmela

+0

但是在调用DocManager.MicrosoftOfficeEditDocument(path +'\ 0')时,会在路径中添加''\ 0'';'使文档始终保持打开状态(即使您的WebDAV实现因此而失败)? – kavun

+0

此解决方案一直在为我工作。希望你只需要修改你的WebDAV服务器来处理空终止的字符串。 – kavun