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行爲簡介」文章中的「安全」部分。