最終結論:
<SharePoint:ScriptLink ID="SPlink1" Name="sp.ui.tgportal.js" Defer="false" runat="server" OnDemand="false" Localizable="true" />
| defer: |
決定是否及時輸出,預設為“false”,“true”為最後輸出; |
| OnDemand: |
決定是否由“RegisterSod”進行註冊,如果使用註冊,則頁面載入完後不馬上載入js,而是在調用函數前要進行載入,比如使用SP.SOD.executeFunc("sp.ui.tgportal.js", null, alert(0)); |
| Localizable: |
決定是否要在2052中尋找js,false是直接在layouts中尋找; |
| LoadAfterUI: |
決定在head中輸出還是在body完成前 |
參考:http://www.ilovesharepoint.com/2010/08/sharepoint-scripts-on-demand-spsod.html
Sharepoint JS CSS 註冊
2011-12-30添加
SharePoint:ScriptLink在內部調用的也是 ClientScript.RegisterStartupScript RegisterClientScriptBlock RegisterClientScriptInclude
通過js路徑來判斷是否未重複註冊
page2.ClientScript.RegisterStartupScript(typeof(ScriptLink), str, info.ToScriptBlock(page));
str = ExtractFilename(name) + localizable.ToString();
=========================================================
部分測試資料
=========================================================
<SharePoint:ScriptLink ID="SPlink1" Name="sp.ui.tgportal.js" Defer="false" runat="server" />
</head>
結果: header附近
25:document.write('<script type="text/javascript" src="/_layouts/2052/init.js?rev=rcZULplQ2sjYL0GwamiLEQ%3D%3D"></' + 'script>');
26:document.write('<script src="/_layouts/2052/sp.ui.tgportal.js?rev=pLpSQ6vSUCg3DEmdOme1fQ%3D%3D"></' + 'script>');
=========================================================
<SharePoint:ScriptLink ID="SPlink1" Name="sp.ui.tgportal.js" Defer="true" runat="server" />
</head>
結果: RegisterSod之前
<script type="text/javascript">
// <![CDATA[
document.write('<script src="/_layouts/2052/sp.ui.tgportal.js?rev=pLpSQ6vSUCg3DEmdOme1fQ%3D%3D"></' + 'script>');
// ]]>
</script>
<script type="text/javascript">RegisterSod("sp.core.js",…
=================================================================
<SharePoint:ScriptLink ID="SPlink1" Name="sp.ui.tgportal.js" Defer="true" runat="server" OnDemand="true" /></head>
或
<SharePoint:ScriptLink ID="SPlink1" Name="sp.ui.tgportal.js" Defer="false" runat="server" OnDemand="true" />
結果:
<script type="text/javascript">RegisterSod("core.js", "\u002f_layouts\u002f2052\u002fcore.js?rev=KpeTWMrqjCSYYu4RiO0\u00252B1Q\u00253D\u00253D");</script>
<script type="text/javascript">RegisterSod("sp.ui.tgportal.js",
==========================================================
<SharePoint:ScriptLink ID="SPlink1" Name="sp.ui.tgportal.js" Defer="true" runat="server" OnDemand="false" Localizable="true" />
</head>
結果:
<script type="text/javascript">
// <![CDATA[
document.write('<script src="/_layouts/2052/sp.ui.tgportal.js?rev=pLpSQ6vSUCg3DEmdOme1fQ%3D%3D"></' + 'script>');
// ]]>
</script>
<script type="text/javascript">RegisterSod("sp.core.js",
===========================================================
<SharePoint:ScriptLink ID="SPlink1" Name="sp.ui.tgportal.js" Defer="false" runat="server" OnDemand="false" Localizable="true" />
結果:
25:document.write('<script type="text/javascript" src="/_layouts/2052/init.js?rev=rcZULplQ2sjYL0GwamiLEQ%3D%3D"></' + 'script>');
26:document.write('<script src="/_layouts/2052/sp.ui.tgportal.js?rev=pLpSQ6vSUCg3DEmdOme1fQ%3D%3D"></' + 'script>');