我們有一個 SharePoint 2013 站點,其中包含一個包含各種檔案、電子表格或其他檔案的串列。從應用程式的其他部分,我們鏈接到這些附件,并期望它們通過使用一些 javascript 和 SharePoint js 函式直接在適當的應用程式中打開editDocumentWithProgID2。
例子:
var docUrl = $.getUrlVar('docURL');
var fileExtension = docUrl.substr(docUrl.lastIndexOf('.') 1);
var extensionAppLocal = {
"doc": "ms-word",
"docm": "ms-word",
"docx": "ms-word",
"mpt": "ms-project",
"xlsx": "ms-excel",
"pptx": "ms-powerpoint",
"one": "onenote|UsePlain",
"vstx": "ms-visio"
};
var openApp = "";
if (extensionAppLocal[fileExtension]) {
openApp = extensionAppLocal[fileExtension];
}
if (docUrl.indexOf(".pdf") > 0) {
editDocumentWithProgID2(docUrl, '', 'AdobeAcrobat.OpenDocuments', '0', $.getUrlVar('siteURL'), '0', openApp);
}
else {
editDocumentWithProgID2(docUrl, '', 'SharePoint.OpenDocuments', '0', $.getUrlVar('siteURL'), '0', openApp);
}
這僅適用于 IE 11,不適用于 Edge 或 Chrome。是否有另一種方法可以為錨標記構建 URL 或使用 Javascript 強制檔案在主機系統默認應用程式中打開,而不是下載或在瀏覽器中預覽?
uj5u.com熱心網友回復:
這樣做的方法是在所有 PC 上設定“檔案擴展名默認應用程式”。在 Windows 上,您可以打開“設定”,然后選擇“應用程式”,然后選擇“默認應用程式”(不知道如何在其他作業系統上執行此操作)。我相信必須有辦法通過腳本來做到這一點(幾乎可以肯定涉及更改 Windows 上的注冊表設定)。然后,您的組織需要安排腳本在所有 PC 上運行。
uj5u.com熱心網友回復:
我們最終向微軟開了一張票,他們的工程師給了我們答案:
允許直接從瀏覽器和 Microsoft Office 插件在 Adob??e Acrobat(或其他默認客戶端應用程式)中本地打開 PDF 檔案的傳統體驗依賴于作為 Office 的一部分安裝到客戶端計算機的 ActiveX 控制元件。Internet Explorer 是唯一允許/支持使用 ActiveX 控制元件的瀏覽器,因此該功能在 IE 之外不可用。
當您單擊網頁上的超鏈接時,瀏覽器和作業系統共同決定如何打開目標資源。當鏈接目標的協議方案是http、https或其他已知的網路協議時,作業系統和瀏覽器知道使用瀏覽器打開請求的資源。對于 Word 和 Excel 檔案,現代版本的 Office 提供了額外的協議處理程式(例如 ms-word: 和 ms-excel:),便于在本地客戶端中打開檔案。SharePoint 2013 和更高版本將使用這些協議呈現指向 Office 檔案的鏈接。單擊 SharePoint 頁面中的這些鏈接之一將告訴作業系統使用相應的 Office 應用程式從目標位置打開檔案。
Adobe 沒有通過 Acrobat 為 PDF 檔案提供類似的協議處理程式,因此在使用現代瀏覽器時,沒有現成的方法可以直接從 SharePoint 頁面(或 Office 加載項)直接在 Acrobat 客戶端中打開檔案。相反,您的開發人員可以創建自定義協議處理程式并呈現指向 PDF 檔案的鏈接,以便它們在首選應用程式中打開。在高層次上,它需要以下...
撰寫一個協議處理程式,它可以:a) 接收檔案的位置作為引數 b) 為客戶端應用程式(即 Acrobat Reader)查找本地安裝的可執行檔案 c) 發出命令以啟動客戶端應用程式并提供指定檔案的引數打開(即 SharePoint 中的檔案 URL)
在客戶端機器上為需要此類互動的每個用戶注冊協議處理程式。o 可以更新加載項的安裝程式以在首次運行期間檢查協議處理程式,并在需要時注冊處理程式。這可以消除單獨安裝/注冊協議處理程式的需要。
更新加載項代碼以檢測 PDF 檔案并撰寫超鏈接以使用協議處理程式方案而不是 http/s。
如果您希望在 SharePoint UI 中也有這種行為,您可以使用 JavaScript 來檢測 PDF 檔案的鏈接并重寫 HREF 值以使用您的協議處理程式方案而不是 http/s。該腳本可以從母版頁中參考,也可以直接包含在母版頁中。對于 SharePoint Online,此更改可以作為欄位定制器或串列視圖定制器擴展來實作(如果需要,可以限制為檔案庫串列型別)。
概述
https://docs.microsoft.com/en-us/previous-versions/windows/internet-explorer/ie-developer/platform-apis/aa767916(v=vs.85)#creating-an-asynchronous-pluggable-protocol -處理程式
例子
https://support.shotgunsoftware.com/hc/en-us/articles/219031308-Launching-Applications-Using-Custom-Browser-Protocols
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/418337.html
標籤:
