这是 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 或者我可以查看吗?有什么想法吗?
谢谢
答案 0 :(得分:0)
在我的情况下,问题是在IE中由于CORS限制而阻止了navigateFrame()调用。我处理了SharePoint 2013和提供程序托管的加载项:我尝试使用来自另一个域的PHAI Web应用程序(PHAI域)的JavaScript打开WebDAV文件夹(包含SharePoint主机域的URL)。如果您在IE中遇到此问题(包含最多10个版本)并尝试在与SharePoint不同的域中运行JavaScript代码,请尝试将您的站点添加到“可信站点”并设置“跨域访问数据源” 'to'禁用'或'提示'。
摘自MSDN:
行为受跨框架安全规则的约束,其中文档无法引用其他服务器或其他域上的行为。在这种情况下,addBehavior方法返回E_ACCESSDENIED。有关详细信息,请参阅“DHTML行为简介”一文中的“安全性”部分。