【问题标题】:External Javascript File in Sharepoint web partSharepoint Web 部件中的外部 Javascript 文件
【发布时间】:2011-07-11 18:11:35
【问题描述】:

我正在创建一个共享点 Web 部件,我想在其中调用外部 javascript 文件。我在以下位置创建了 .js 文件

C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\LAYOUTS\CustomJScripts

调用函数时未找到给定函数的错误。 javascript文件的位置是否错误? 以下是代码:

protected override void CreateChildControls()
{
    Page.ClientScript.RegisterStartupScript(
        this.GetType(), 
        this.ID, 
        "_spOriginalFormAction = document.forms[0].action;", 
        true);


       ClientScriptManager cs = Page.ClientScript;
        if (!cs.IsClientScriptIncludeRegistered("OnMouseOverScript"))
        cs.RegisterClientScriptInclude(
            this.GetType(), 
            "OnMouseOverScript", 
            ResolveUrl("/_layouts/CustomJScripts/MyJS.js"));
}

private void GetData(string strSchCode)
{

     Table t = new Table();

     TableRow tr = new TableRow();
     TableCell tc = new TableCell();

     tc.Attributes.Add("onmouseover", "return ShowInfo('AA');");
     tr.Controls.Add(tc);
     t.Controls.Add(tr);
     this.Controls.Add(t);
}

【问题讨论】:

    标签: javascript sharepoint-2010 web-parts


    【解决方案1】:

    您必须将此 javascript 添加到您的 Web 部件。在我的 webpart 中,我正在使用这种方法:

        protected override void OnPreRender(EventArgs e)
        {
            Page.ClientScript.RegisterStartupScript(GetType(), "MyScript",
                "<SCRIPT language='javascript' src='~/_layouts/CustomJScripts/MyJS.js'></SCRIPT>", false);
            base.OnPreRender(e);
        }
    

    【讨论】:

    • 感谢 Korin - Marek K. 的快速回复。我已经尝试过您的代码,但它仍然给我以下错误:Microsoft JScript 运行时错误:预期对象
    【解决方案2】:

    也许单引号有问题?例如使用双引号而不是单引号:

    tc.Attributes.Add("onmouseover", "return ShowInfo(\"AA\");");
    

    【讨论】:

    • 感谢本德的回答。但这并没有解决我的问题
    【解决方案3】:

    我会使用ScriptLink.Register 方法,然后将您的文件移动到 14\TEMPLATE\LAYOUTS\1033\CustomJScripts。

    ScriptLink 封装了 ClientScriptManager 调用以及其他功能。 name 参数是一个相对路径,这就是为什么 javascript 文件需要位于 14\TEMPLATE\LAYOUTS\ LCID 目录中(其中 LCID 是您的语言编号)。

    您的代码将如下所示:

    protected override void CreateChildControls()
    {
        Page.ClientScript.RegisterStartupScript(
            this.GetType(), 
            this.ID, 
            "_spOriginalFormAction = document.forms[0].action;", 
            true);
    
        ScriptLink.Register(this.Page, "CustomJScripts/MyJS.js", true);
    }
    

    【讨论】:

      猜你喜欢
      • 2013-05-26
      • 2013-01-22
      • 1970-01-01
      • 2011-04-15
      • 2011-06-16
      • 1970-01-01
      • 2016-01-31
      • 1970-01-01
      相关资源
      最近更新 更多