通过代码为SharePoint添加Javascript引用

在SharePoint的实际开发过程中,我们总有一些通用的Javascript脚本,如何添加这些客户端脚本的引用呢? 最简单的方式我想应该是用SharePoint Designer直接编辑母版页(Master Page),在<Header></Header>中添加以下代码。

<script type="text/javascript" src="/_layouts/MyScripts.js">
这是最直接的方式,但却不是推荐的方式,在开发和测试环境中你可以这样快速的添加,但在正式的环境中,我们并不希望直接用SharePoint Designer去直接修改任何站点。本人通过另一种方法动态的添加脚本的引用。

通过Feature添加脚本引用

首先创建一个简单的Feature:
1. 打开VS 2010, 创建一个空的SharePoint项目,由于要添加javascript引用,所以我们的部署方式只能选择“Deploy as a Farm Solution”。
2. 创建好新的项目后,在解决方案管理器中找到Features节点,右键添加一个新的Feature。如下图
  

      

3. 右键单击新创建的Feature1, 添加一个Event Receiver
   

      

 
4.这样一个简单的Feature就完成了,你当然可以完善一下其他信息比如,Feature的名字,描述等等。

添加引用代码

接下来就是在激活feature的时候,添加脚本引用。代码非常简单。
    
 // Uncomment the method below to handle the event raised after a feature has been activated.
        SPWeb currentWeb;
        public override void FeatureActivated(SPFeatureReceiverProperties properties)
        {
            try
            {
                using (currentWeb = (SPWeb)properties.Feature.Parent)
                {
                    if (currentWeb != null)
                    {                        
                        currentWeb.CustomJavaScriptFileUrl = @"/_layouts/MyScripts.js";
                        currentWeb.Update();
                    }
                }
            }
            catch (Exception ex)
            { }
            finally
            {
                if (currentWeb != null)
                    currentWeb.Dispose();
            }
        }

  最后用VS再带的打包和部署功能将解决方案部署,然后通过“管理站点应用”找到Feature1,然后激活。

检查部署情况

 打开SharePoint 站点,查看源代码:你就会发现我们的脚本已经嵌入页面了(粗体部分)。

  

document.write('<script type="text/javascript" src="/_layouts/blank.js?rev=QGOYAJlouiWgFRlhHVlMKA%3D%3D"></' + 'script>');
document.write('<script type="text/javascript" src="/ScriptResource.axd?d=SKFLvF-EvR1mlvrYxWyEZjFDw6bS-SVrMGavINFSyCzVEqN_9eg59nW_dFeLRE6SgfxuA6tSz34aPo1TpYBKN2yiixIon88_QeT4s2k6JrM1&t=ffffffffc9d3eaae"></' + 'script>');
// ]]>
</script>
<script type="text/javascript" src="/_layouts/MyScripts.js"></script>
<link type="text/xml" rel="alternate" href="/sites/SB/_vti_bin/spsdisco.aspx" />

  当然还有其他的方法,希望大家交流。

posted @ 2011-12-22 18:22  懒牛  阅读(1846)  评论(0编辑  收藏  举报