Fil*_*ans 1 .net javascript c# sitecore
如何向页脚添加外部脚本引用?我知道如何将它添加到标题中,如下面的代码,但它需要在页面的底部.
private void Page_Load(object sender, EventArgs e)
{
if (!Sitecore.Context.PageMode.IsPageEditor)
{
var javascriptRef = new LiteralControl("<script src=\"/js/vendor/jquery.bxslider.min.js\"></script>");
Page.Header.Controls.Add(javascriptRef);
}
}
Run Code Online (Sandbox Code Playgroud)
小智 5
您可以在aspx文件中添加以下代码行(在body标记的末尾添加一个Literal控件):
<asp:Literal runat="server" ID="litScript"/>
</body>
Run Code Online (Sandbox Code Playgroud)
从后面的代码中您有:
private void Page_Load(object sender, EventArgs e)
{
if (!Sitecore.Context.PageMode.IsPageEditor)
{
litScript.Text="<script src=\"/js/vendor/jquery.bxslider.min.js\"></script>";
}
}
Run Code Online (Sandbox Code Playgroud)
对于单个控件/子布局控制它们包含在页面上的脚本的项目,我通常用于Page.ClientScript管理脚本包含.
ClientScriptManager有一些有用的方法可以在页面中包含脚本,并通过比较类型和脚本名称来检测是否已经包含脚本,这样就不会多次包含脚本(可能很适合处理依赖项,但我更喜欢使用requirejs).
三种主要的脚本注册方法是:
RegisterClientScriptBlockRegisterClientScriptIncludeRegisterStartupScriptRegisterClientScriptBlock 将脚本转储到页面顶部
Page.ClientScript
.RegisterClientScriptBlock(
GetType(),
scriptName,
"<script>alert('do stuff');</script>");
Run Code Online (Sandbox Code Playgroud)
RegisterClientScriptInclude转储<script src="">在页面顶部
Page.ClientScript
.RegisterClientScriptInclude(
GetType(),
scriptName,
"path/to/scriptname.js");
Run Code Online (Sandbox Code Playgroud)
RegisterStartupScript 转储页面底部的脚本
Page.ClientScript
.RegisterStartupScript(
GetType(),
scriptName,
"<script>alert('do stuff');</script>");
Run Code Online (Sandbox Code Playgroud)
不幸的是,没有本机RegisterStartupScriptInclude允许将外部脚本添加到页面底部,所以我编写了一个扩展方法:
public static class ClientScriptManagerExtensions
{
/// <summary>
/// Registers the startup script with the <see cref="Page"/> object using a type,
/// a key, and a url
/// </summary>
/// <param name="source">
/// The <see cref="ClientScriptManager"/> with which the script should be registered
/// </param>
/// <param name="type">The type of startup script to register</param>
/// <param name="key">The key of the startup script to register</param>
/// <param name="url">The url of the startup script include to register</param>
public static void RegisterStartupScriptInclude(this ClientScriptManager source,
Type type,
string key,
string url)
{
if (source == null)
throw new ArgumentNullException("source");
var script = string.Format(@"<script src=""{0}""></script>", HttpUtility.HtmlEncode(url));
source.RegisterStartupScript(type, key, script);
}
}
Run Code Online (Sandbox Code Playgroud)
这允许开发人员注册外部脚本,以便在</form>元素结束时执行,这往往足够接近</body>性能.
Page.ClientScript.RegisterStartupScriptInclude(Page.GetType(), "jquery", "path/to/jquery.js");
Page.ClientScript.RegisterStartupScriptInclude(GetType(), "mycontrol", "path/to/mycontrol.js");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2867 次 |
| 最近记录: |