2

这是一个JavaScript/SharePoint问题。我在SharePoint StackExchange社区中有一个similar question,但我几个月内没有收到任何内容。此特定问题与SharePoint 2010有关。SharePoint&JavaScript - “用浏览器打开”问题

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

当用户点击名为“用资源管理器打开”的按钮时,大部分时间为,该文件夹将在Windows中打开。像这样的常见问题“尝试重新启动WebClient服务”将无法​​工作,一旦用户没有权限在其工作PC中执行任何操作。

研究在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,铬和Firefox,仅IE 10的支撑年纪大了。如果使用IE 11,那么将负责处理该内容。

  • #default#httpFolder - (?)一个行为,显然不再采用时下(过时)

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

我最关心的是,为什么有时navigateFrame返回 “OK” 等次 “失败”?

有谁知道发生了什么“内”navigateFrame或我可以检查吗?有任何想法吗?

谢谢

回答

0

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

摘录:

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