2013-05-24 1 views
3

Я пытаюсь использовать плагин FFWinPlugin для доступа к содержимому webdav из Google Chrome или firefox. Сервер webdav использует ITHit webdavsystem.Приложение FFWinPlugin/sharepoint-x не работает после обновления страницы

Проблема заключается в том, что, хотя она работает изначально, после обновления веб-страницы все дальнейшие вызовы в EditDocument завершаются с ошибкой - запрос webdav просто не создается. Это влияет на все последующие вызовы на любой webdav-сервер с любой веб-страницы. Браузеру необходимо перезапустить (или, в случае хром, задача плагина «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> 

Я проверяю это с офисом 2013 с помощью Firefox версии 20.0.1 и хром версии 27.0.1453.93m.

Использование OpenDocuments control на IE работает без проблем.

У меня нет сервера sharepoint для тестирования. Может ли кто-нибудь подтвердить/опровергнуть, что у него такая же проблема?

Кто-нибудь сталкивался с этой проблемой и/или имел решение? Кажется, это проблема с плагином Microsoft.

ответ

1

Я не пробовал это с офисом 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 - вам нужно заменить существующий код ExtJS с прямым DOM вызывает или JQuery вызовы в зависимости от того, что библиотеки вы используете
  • можно упростить код, это выглядит так, потому что это был какой-то код, который я вынул

 Смежные вопросы

  • Нет связанных вопросов^_^