页面刷新后FFWinPlugin application / sharepoint-x失败

时间:2013-05-24 07:43:48

标签: google-chrome firefox webdav ithit-webdav-server

我正在尝试使用FFWinPlugin插件从google chrome或firefox访问webdav内容。 webdav服务器使用ITHit 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>

我正在使用Firefox 2013使用firefox版本20.0.1和chrome版本27.0.1453.93m对此进行测试。

在IE上使用OpenDocuments control可以毫无问题地工作。

我没有要测试的sharepoint服务器。任何人都可以确认/否认它有同样的问题吗?

有没有人遇到过这个问题和/或有解决方案?在我看来,这是Microsoft插件的一个问题。

2 个答案:

答案 0 :(得分:1)

我没有尝试使用Office 2013,但下面的代码在办公室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代码,具体取决于您使用的库
  • 你可以简化代码,看起来像这样,因为它有一些我拿出来的代码

答案 1 :(得分:-1)

这个帮助

sharepoint.EditDocument(getLocationRoot() + "/word.docx"+"\0");

更多: [https://code.google.com/p/chromium/issues/detail?id=269183#makechanges]