SharePoint;JavaScript-;用资源管理器打开”;问题

SharePoint & JavaScript - The "Open with Explorer" issue

本文关键字:问题 资源管理器 JavaScript- SharePoint      更新时间:2023-09-26

这是一个JavaScript/SharePoint问题。我在SharePoint StackExchange社区也有类似的问题,但我已经几个月没有收到任何消息了。此特定问题与SharePoint 2010有关。

对于那些不知道的人来说,SharePoint中有一个标准功能,允许用户使用Windows资源管理器打开文档库,当你想上传大量文档或四处移动文件/文件夹时,这非常方便。

当用户单击名为"使用资源管理器打开"的按钮时,大多数时候,文件夹会在Windows中打开。常见的答案,如"尝试重新启动WebClient服务"将不起作用,一旦用户没有权限在他们的工作电脑中做任何事情。

在研究了SharePoint JavaScript文件后,我发现了该功能的工作原理:

点击"用浏览器打开"按钮后,会调用一些函数,但这里是"神奇"应该发生的地方:

function NavigateHttpFolderCore() {
    httpFolderDiv = document.createElement("DIV");    
    ...
    document.body.appendChild(httpFolderDiv);
    httpFolderDiv.onreadystatechange = NavigateHttpFolderCore;     
    httpFolderDiv.addBehavior("#default#httpFolder");
    d = httpFolderDiv.navigateFrame("https://sharepointsite.com/sites/site1/docLib", "_blank");
    if(d == "OK"){
        ...
    }
    ...
}

来自上方:

  • addBehavior-IE 11、Chrome和Firefox不支持,只有IE 10及更旧版本。如果使用IE 11meta http equiv="X-UA-Compatible"content="IE=8">会处理它。

  • #默认#httpFolder-一种行为(?),现在显然不再使用(过时)

  • navigateFrame-如果成功,则返回字符串"OK",这意味着"使用资源管理器打开"确实会在Windows资源管理器中打开,或者返回字符串"FAILED",并且"您的客户端不支持使用Windows资源管理器打开此列表"将在我的屏幕中弹出。

我主要担心的是,为什么navigateFrame有时返回"OK",而其他时候返回"FAILED"?

有人知道navigateFrame内部发生了什么吗?或者我可以检查一下吗?有什么想法吗?

感谢

在我的案例中,问题出在IE中,由于CORS限制,它阻止了navigationFrame()调用。我处理了SharePoint 2013和提供商托管的加载项:我试图从另一个域PHAI域的PHAI web应用程序中用JavaScript打开WebDAV文件夹(URL包含SharePoint主机域)。如果您在IE(包括10版)中遇到此问题,并且尝试在与SharePoint不同的域中运行JavaScript代码,请尝试将您的网站添加到"受信任的网站",并将"跨域访问数据源"设置为"禁用"或"提示"。

摘自MSDN:

行为受跨框架安全规则的约束,其中文档不能引用另一台服务器或另一个域上的行为。在这种情况下,addBehavior方法返回E_ACCESSDENIED。有关更多信息,请参阅DHTML行为简介文章中的安全部分。