3

body タグの末尾の直前にスクリプト参照を登録する方法はありますか? 私はちょうど試しました:

page.ClientScript.RegisterClientScriptInclude("jquery.widgets.js", page.ResolveClientUrl("~/js/plugins/jquery.widgets.js"));

ただし、フォーム要素の先頭で、ViewState の直後にファイルを登録します。

4

2 に答える 2

10

スクリプト マネージャーを使用してスクリプトを動的に登録 するには、属性をPage_Load使用して、スクリプトがドキュメントの最後に登録されるようにします。LoadScriptsBeforeUI="False"

<body>
<form id="form1" runat="server">
    Some content here
    <asp:ScriptManager runat="server" ID="smScriptManager" LoadScriptsBeforeUI="False">
        <Scripts>

        </Scripts>
    </asp:ScriptManager>
</form>

そして、あなたのコードで

Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
    smScriptManager.Scripts.Add(New ScriptReference("~/Include/Site.js"))
End Sub
于 2013-01-16T11:33:01.403 に答える
6

私がすることは、MasterPage の下部に ContentPlaceHolder を作成することです (ある場合)-

//Any scripts required on all pages, e.g. JQuery go before the content placeholder

<asp:ContentPlaceHolder ID="ScriptContentPlaceHolder" runat="server">
</asp:ContentPlaceHolder>
</body>

個々のページでは、次のようになります-

<asp:Content ContentPlaceHolderID="ScriptContentPlaceHolder" ID="PageScriptContent" runat="server">
     //Load script with application relative path
     <script src="<%= Page.ResolveURL("~/js/plugins/jquery.widgets.js") %>" type="text/javascript"></script>

     //Load script with HTML relative path
     <script src="/js/plugins/jquery.widgets.js" type="text/javascript"></script>
</asp:Content>

コード ビハインドから条件付きでスクリプトを追加する必要がある場合は、 Controls.Addを使用して新しいリテラルまたはHtmlGenericControlを ContentPlaceHolder に追加できます。

 HtmlGenericControl ScriptGenericControl = new HtmlGenericControl("script");
 ScriptGenericControl.Attributes.Add("type", "text/javascript");
 ScriptGenericControl.Attributes.Add("src", Page.ResolveURL("~/js/plugins/jquery.widgets.js"));
 PageScriptContent.Controls.Add(ScriptGenericControl);

または-

 PageScriptContent.Controls.Add(new Literal(){ Text = string.Format("<script type='text/javascript' src='{0}'></script>", Page.ResolveURL("~/js/plugins/jquery.widgets.js")) };
于 2013-01-16T11:00:30.313 に答える