wslhs 发表于 2015-9-28 10:38:16

SharePoint:ScriptLink测试

  最终结论:

   
<SharePoint:ScriptLinkID=&quot;SPlink1&quot;Name=&quot;sp.ui.tgportal.js&quot;   Defer=&quot;false&quot;runat=&quot;server&quot; OnDemand=&quot;false&quot; Localizable=&quot;true&quot; />


defer:
决定是否及时输出,默认为“false”,“true”为最后输出;


OnDemand:
  决定是否由“RegisterSod”进行注册,如果使用注册,则页面加载完后不马上加载js,而是在调用函数前要进行加载,比如使用SP.SOD.executeFunc(&quot;sp.ui.tgportal.js&quot;, 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=&quot;SPlink1&quot; Name=&quot;sp.ui.tgportal.js&quot; Defer=&quot;false&quot; runat=&quot;server&quot;/>
</head>
  结果: header附近
  25:document.write('<script type=&quot;text/javascript&quot; src=&quot;/_layouts/2052/init.js?rev=rcZULplQ2sjYL0GwamiLEQ%3D%3D&quot;></' + 'script>');
26:document.write('<script src=&quot;/_layouts/2052/sp.ui.tgportal.js?rev=pLpSQ6vSUCg3DEmdOme1fQ%3D%3D&quot;></' + 'script>');
  =========================================================
  <SharePoint:ScriptLink ID=&quot;SPlink1&quot; Name=&quot;sp.ui.tgportal.js&quot; Defer=&quot;true&quot; runat=&quot;server&quot; />
</head>
  结果: RegisterSod之前
  <script type=&quot;text/javascript&quot;>
// <![CDATA[
document.write('<script src=&quot;/_layouts/2052/sp.ui.tgportal.js?rev=pLpSQ6vSUCg3DEmdOme1fQ%3D%3D&quot;></' + 'script>');
// ]]>
</script>
<script type=&quot;text/javascript&quot;>RegisterSod(&quot;sp.core.js&quot;,…
  =================================================================
  <SharePoint:ScriptLinkID=&quot;SPlink1&quot;Name=&quot;sp.ui.tgportal.js&quot;   Defer=&quot;true&quot;runat=&quot;server&quot; OnDemand=&quot;true&quot; /></head>
  或
  <SharePoint:ScriptLinkID=&quot;SPlink1&quot;Name=&quot;sp.ui.tgportal.js&quot;   Defer=&quot;false&quot;runat=&quot;server&quot; OnDemand=&quot;true&quot;/>
  结果:
  <script type=&quot;text/javascript&quot;>RegisterSod(&quot;core.js&quot;, &quot;\u002f_layouts\u002f2052\u002fcore.js?rev=KpeTWMrqjCSYYu4RiO0\u00252B1Q\u00253D\u00253D&quot;);</script>
<script type=&quot;text/javascript&quot;>RegisterSod(&quot;sp.ui.tgportal.js&quot;,
  ==========================================================
  <SharePoint:ScriptLinkID=&quot;SPlink1&quot;Name=&quot;sp.ui.tgportal.js&quot;   Defer=&quot;true&quot;runat=&quot;server&quot; OnDemand=&quot;false&quot; Localizable=&quot;true&quot; />
  </head>
  结果:
  <script type=&quot;text/javascript&quot;>
// <![CDATA[
document.write('<script src=&quot;/_layouts/2052/sp.ui.tgportal.js?rev=pLpSQ6vSUCg3DEmdOme1fQ%3D%3D&quot;></' + 'script>');
// ]]>
</script>
<script type=&quot;text/javascript&quot;>RegisterSod(&quot;sp.core.js&quot;,
  ===========================================================
  <SharePoint:ScriptLinkID=&quot;SPlink1&quot;Name=&quot;sp.ui.tgportal.js&quot;   Defer=&quot;false&quot;runat=&quot;server&quot; OnDemand=&quot;false&quot; Localizable=&quot;true&quot; />
  结果:
  25:document.write('<script type=&quot;text/javascript&quot; src=&quot;/_layouts/2052/init.js?rev=rcZULplQ2sjYL0GwamiLEQ%3D%3D&quot;></' + 'script>');
26:document.write('<script src=&quot;/_layouts/2052/sp.ui.tgportal.js?rev=pLpSQ6vSUCg3DEmdOme1fQ%3D%3D&quot;></' + 'script>');
页: [1]
查看完整版本: SharePoint:ScriptLink测试