簡體   English   中英

如何在SharePoint 2013 Online中使用JavaScript動態創建母版頁文件?

[英]How to create master page file dynamically using JavaScript in SharePoint 2013 Online?

我正在創建一個SharePoint App,我想執行以下操作。

  1. 在母版頁庫中,復制當前母版頁並創建新的母版頁。 (因為我們手動執行新的SharePoint Designer。)
  2. 在新的母版頁中插入JavaScript參考並將其保存。
  3. 將新的母版頁應用為默認母版頁。

所有這些都應僅使用JavaScript完成。

有人知道怎么做嗎?

謝謝user988917

要獲取當前的母版頁,請向以下端點發出GET請求

/_api/Web?$select=CustomMasterUrl,MasterUrl

要更改當前的母版頁,

function MastePageChange() {
var clientcontext;
var cweb;
var customMasterURL = '/_catalogs/masterpage/NewMasterPage.master';
clientcontext = new SP.ClientContext.get_current();
cweb = clientcontext.get_web();
cweb.set_customMasterUrl(masterPageUrl);
cweb.set_masterUrl(masterPageUrl);
cweb.update();
clientcontext.executeQueryAsync(function() {
    alert("Master Page has been changed successfully \n" + customMasterURL);
}, function(sender, args) {
    alert("Error: " + args.get_message());
});
}

我沒有在JS中嘗試過此方法,但通常有等效的方法,因此查看服務器端代碼會有所幫助。 http://blog.vegaitsourcing.rs/2008/10/programmatically-uploading-master-pages.html這也是如何使用JS上傳文件的示例(我相信僅適用於HTML5瀏覽器) http:// msdn。 microsoft.com/en-us/library/jj163201.aspx

棘手的事情將是文件操作(注入JS)...我看不出有一種純粹的方法可以從JS做到這一點的好方法,您可能需要一些服務器端代碼才能打開文件並注入新代碼,保存后再上傳回去。

要修改母版頁,建議您看一下這兩個資源。

首先,一篇博客文章解釋了如何應用母版頁:

arichterwork.blogspot.com/2008/03/programmatically-inherit-master-page.html

例如web.MasterUrl = "/_layouts/custom.master"

接下來是在核心對象(在這種情況下為Web)上的SharePoint JavaScript API參考:

msdn.microsoft.com/EN-US/library/office/jj245288.aspx

您可以看到masterUrl和customMasterUrl都是可用的R / W。

最后,您需要進行一些基本的文件操作。 這是MSDN資源:

msdn.microsoft.com/en-us/library/jj163201.aspx#BasicOps_FileTasks

還有另外兩個挑戰。 首先是關於權限:更新母版庫是一項高特權操作。 另一個風險更大的挑戰是,您正在向頁面中注入JS,而JS可能會被惡意使用。

如果您打算將此方法與SharePoint應用程序一起使用,我會考慮尋找另一種方法。 不允許這樣的腳本注入。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM