我正在尝试使用FFWinPlugin插件从google chrome或firefox访问webdav内容。webdav服务器使用it webdavsystem.
问题是,虽然它最初工作,刷新网页后,所有进一步调用EditDocument失败没有错误- webdav请求根本没有作出。这会影响所有从任何网页对任何webdav服务器的后续调用。需要重新启动浏览器(或者,在chrome的情况下,"Microsoft Office 2013"插件任务可以被杀死)才能恢复。
示例代码如下:
<script>
function test() {
var sharepoint = document.getElementById("winFirefoxPlugin");
sharepoint.EditDocument(getLocationRoot() + "/word.docx");
}
function getLocationRoot() {
return location.protocol + '//' + location.hostname + (location.port ? ':' + location.port : '');
}
</script>
<object id="winFirefoxPlugin" type="application/x-sharepoint" width="0" height="0" style="visibility:hidden;"></object>
<button onclick="test()">test</button>
我正在Office 2013中使用firefox 20.0.1版本和chrome 27.0.1453.93m版本进行测试。
在IE上使用OpenDocuments控件没有问题。
我没有sharepoint服务器来测试。有人能证实/否认它有同样的问题吗?
有人遇到过这个问题和/或有解决方案吗?在我看来,这是微软插件的问题。
我没有在office 2013中尝试过,但下面的代码在office 2010中适用。你的代码和我的代码唯一的区别是插件对象是动态添加的。
getOrCreateContainer: function(containerId)
{
var container = Ext.get(containerId);
if (container)
return container;
container = new Ext.Element(document.createElement('div'));
container.id = containerId;
container.setStyle({ width: '0px', height: '0px', position: 'absolute', overflow: 'hidden', top: '-1000px', left: '-1000px' });
Ext.getBody().appendChild(container);
return container;
},
getOrCreateSharePointPluginContainer: function()
{
var sharePointPluginContainer = this.getOrCreateContainer('_sharePointPluginContainer');
if (!sharePointPluginContainer.first())
{
var domObj = Ext.DomHelper.createDom(
{
tag: 'object',
type: 'application/x-sharepoint',
style: { visibility: 'hidden', width: '0px', height: '0px' }
}
);
sharePointPluginContainer.appendChild(new Ext.Element(domObj));
}
return sharePointPluginContainer;
},
sharePointEditDocument: function (sUrl)
{
try
{
var sho = this.getSharePointOpenDocumentsCtrl();
if (sho)
{
if (!sho.EditDocument(sUrl))
{
//todo: use localized message
alert('Cannot edit file');
return false;
}
}
}
catch (e)
{
return false;
}
},
getSharePointOpenDocumentsCtrl: function ()
{
if (this._sharePointOpenDocumentsControl == null)
{
this._sharePointOpenDocumentsControl = this.getOrCreateSharePointPluginContainer().first().dom;
}
return this._sharePointOpenDocumentsControl;
},
请注意以下内容:
- 代码使用ExtJs -你需要用直接的DOM调用或jQuery调用来替换现有的ExtJs代码,这取决于你使用的库
- 你可以简化代码,它看起来是这样的因为它有一些我去掉的代码
此帮助
sharepoint.EditDocument(getLocationRoot() + "/word.docx"+" ");
:(https://code.google.com/p/chromium/issues/detail?id=269183吧)