SharePoint& JavaScript - "使用资源管理器打开"问题

时间:2016-07-28 06:47:23

标签: javascript internet-explorer sharepoint sharepoint-2010 windows-explorer

这是 JavaScript / SharePoint 问题。我在SharePoint StackExchange社区中有一个similar question,但几个月后我还没有得到任何东西。此特定问题与SharePoint 2010有关。

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

当用户点击名为&#34的按钮;使用资源管理器"打开,大部分时间时,该文件夹将在Windows中打开。一旦用户无权在其工作PC中执行任何操作,"尝试重新启动WebClient服务" 等常见答案将无效。

在研究了SharePoint JavaScript文件之后,我发现了这个功能应该如何工作:

点击"用资源管理器打开"按钮,将调用一些函数,但这里是" magic"应该发生:

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 11,< meta http-equiv =" X-UA-Compatible"含量=" IE = 8" >将照顾它。

  • #default#httpFolder - 一种行为(?),现在显然不再使用(已废弃)

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

我主要担心的是,为什么有时 navigateFrame 会返回" OK"和其他时间"失败"?

有谁知道会发生什么事情"内部" navigateFrame 或者我可以查看吗?有什么想法吗?

谢谢

1 个答案:

答案 0 :(得分:0)

在我的情况下,问题是在IE中由于CORS限制而阻止了navigateFrame()调用。我处理了SharePoint 2013和提供程序托管的加载项:我尝试使用来自另一个域的PHAI Web应用程序(PHAI域)的JavaScript打开WebDAV文件夹(包含SharePoint主机域的URL)。如果您在IE中遇到此问题(包含最多10个版本)并尝试在与SharePoint不同的域中运行JavaScript代码,请尝试将您的站点添加到“可信站点”并设置“跨域访问数据源” 'to'禁用'或'提示'。

摘自MSDN

  

行为受跨框架安全规则的约束,其中文档无法引用其他服务器或其他域上的行为。在这种情况下,addBehavior方法返回E_ACCESSDENIED。有关详细信息,请参阅“DHTML行为简介”一文中的“安全性”部分。