ASP.Net WebForms IE7 ScriptManager.RegisterClientScriptInclude无效

时间:2014-01-14 11:15:19

标签: asp.net webforms scriptmanager

所以我遇到了以下问题。我已经为servercontrol创建了一个基类,以便更容易开发脚本控件。

我采用以下方式实现这一目标:

if (!Page.ClientScript.IsClientScriptIncludeRegistered(Page.GetType(), "scriptControl.js"))
    ScriptManager.RegisterClientScriptInclude(Page, Page.GetType(), "scriptControl.js", this.ResolveUrl("~/Layouts/scriptControl.js"));

var relScriptPath = GetRelativeScriptUrlPath();
if (!string.IsNullOrEmpty(relScriptPath))
{
    var relativeToken = "relativeScript" + ClientConstructorName;
    if (!Page.ClientScript.IsClientScriptIncludeRegistered(Page.GetType(), relativeToken))
    ScriptManager.RegisterClientScriptInclude(Page, Page.GetType(), relativeToken, this.ResolveUrl(relScriptPath));
}

ScriptManager.RegisterStartupScript(Page, Page.GetType(), ClientID, string.Format("scriptControl.registerAndExecute('{0}','{1}');", ClientConstructorName, ClientID), true);

奇怪的是,除了一堆狗屎 IE7之外,几乎每个浏览器都能正常工作

对于大多数浏览器的结果是:

-> load scriptcontrol.js (debug alert notification)
-> load specific.js (debug alert notification)
-> scriptExecute

对于IE7,结果是:

-> load scriptcontrol.js (debug alert notification)
-> scriptExecute (exception. js function as declared in spefific.js not defined because it apparently wasn't run)

其他人是否遇到过类似的问题?到目前为止,我的研究并没有带来任何帮助。

旁注:

我的js文件已完成,该行解决了我之前回忆过类似的问题:

if (typeof (Sys) !== 'undefined') Sys.Application.notifyScriptLoaded();

1 个答案:

答案 0 :(得分:0)

好的。我发现了这个问题。原因是像

这样的对象声明中的逗号
{ 
   option, 
   option2,
}

奇怪的是,这似乎足以打扰IE7,尽管在调试警报之后发出了声明,并且没有指出错误来源的完全无用的错误消息。

哦,好吧。