我需要将一些 javascript 绝对放在页面的 <head> 块中——它必须在页面的其余部分之前执行,因为脚本的可能结果是重定向到不同的页面。
但是,当我对使用 jQuery 的代码使用 RegisterClientScriptInclude(在其中放置一些 jQuery)和 RegisterClientScriptBlock 时,它会将其放在 <body> 块的顶部附近,并且不会执行。我看不到以编程方式将此 javascript 放入 <head> 块的方法——它必须以编程方式进行,因为有时我不希望它在那里,有时我会。
我试着看看是否可以直接引用Content1,即 <head> 块对应的asp:Content 元素的ID,但不行。
以防万一有人认为 RegisterStartupScript 可能工作:它没有。它在 <body> 块中的位置比其他所有内容都低。说来也怪。
想要一些代码?这里:
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,它也会崩溃)。