javascript - 如何以编程方式将 javascript 放入 <head> block 中?

标签 javascript asp.net registerclientscriptblock

我需要将一些 javascript 绝对放在页面的 block 中——它必须在页面的其余部分之前执行,因为脚本的可能结果是重定向到不同的页面。

但是,当我在使用 jQuery 的代码中使用 RegisterClientScriptIninclude (将一些 jQuery 放入其中)和 RegisterClientScriptBlock 时,它会将其放在 block 的顶部附近,并且不会执行。我看不到以编程方式将此 javascript 放入 block 的方法 - 它必须以编程方式,因为有时我不希望它在那里,有时我又想。

我试图看看是否可以直接引用Content1,即与 block 对应的asp:Content元素的ID,但没有成功。

以防万一有人认为 RegisterStartupScript 可能有效:事实并非如此。它将它放在 block 中比其他所有内容都低的位置。奇怪的是。

想要一些代码吗?这里:

Type csType = this.GetType();
ClientScriptManager clientScript = Page.ClientScript;

if (!clientScript.IsClientScriptIncludeRegistered(jqueryScriptName))
{
    clientScript.RegisterClientScriptInclude(jqueryScriptName, "~/Scripts/jquery-1.7.1.min.js");
}

if (!clientScript.IsClientScriptBlockRegistered(citrixDetectorScriptName))
{
    clientScript.RegisterClientScriptBlock(csType, citrixDetectorScriptName, citrixDetectorScriptText, true);
}

应大众要求,我如何检测ActiveX组件。这是 JScript。

try {
    var icaObj = new ActiveXObject("Citrix.ICAClient");

    var CitrixVersion = icaObj.ClientVersion.split(".");
    var MajorMinorVersion = CitrixVersion[0] + "." + CitrixVersion[1];
    if (MajorMinorVersion == "11.0") {
        // Citrix is OK
    }
    else {
        window.navigate("WrongCitrix.aspx?Citrix=" + MajorMinorVersion);
    }
}
catch (e) {

    window.navigate("NoCitrix.aspx");
}

如果 ActiveX 组件不存在,则重定向是一个页面,告诉用户需要安装它。如果 ActiveX 组件是 11.0 以外的任何其他版本,则重定向到解释此问题以及如何处理这种情况的页面(例如 backrevving)。

在页面加载期间进行事先检查,以确保它们具有 Internet Explorer v4 至 v9,因为任何其他版本都无法与该产品一起使用(如果 IE10+ 尝试加载 ActiveX 组件的 v11.0,它就会崩溃) .

最佳答案

如果我理解您的问题,您可以在页面内任意位置插入 PlaceHolder 控件。

<%@ Page Language="C#" AutoEventWireup="True" 
   CodeBehind="Default.aspx.cs" Inherits="WebApplicationTelerik.Default" %>
<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <script type="text/javascript" 
    src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
    <asp:PlaceHolder runat="server" ID="PlaceHolder1"></asp:PlaceHolder>
</head>
<body>
    <form id="form1" runat="server">
    </form>
</body>
</html>

protected void Page_Load(object sender, EventArgs e)
{
    PlaceHolder1.Controls.Add(new LiteralControl(
       "<script type=\"text/javascript\"> alert('here'); </script>"));
}

关于javascript - 如何以编程方式将 javascript 放入 <head> block 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20083905/

相关文章:

c# - ClientScript.RegisterClientScriptBlock?

asp.net - 如何找出哪个按钮正在提交页面?

javascript - D3 错误地处理堆积条形图

javascript - 检索城市的位置 Google Map API

jquery - Amcharts 未显示在模态弹出窗口中

c# asp.net mvc5,在c# dll中嵌入js

c# - JSON 变量未在回发时更新

javascript - 从各种大小的字符串生成可重复的哈希值(5-10 个字符)

javascript - 字符串中的正则表达式在 Javascript 中给出 null

asp.net - 如何从 Visual Studio 运行 Dart 代码?