服务器端加入自动运行的JS代码

          本来不是一个很复杂的事情,就是想通过服务器的代码,控制客户端加载时运行一个js函数。却折腾了一个早上,首先是用

          page.ClientScript.RegisterClientScriptBlock(typeof(string), "FomrJS", js);

          这个js块将放在</form>之前,并在window.onload之前运行。假如不是复杂的代码的话,如alert之类,完全没有问题。但我用到的js函数刚好比较复杂,结果每次都报错。把代码复制出来,把js块挪到</form>和</body>之间,就ok。所以,考虑怎样把js块放到</form>之外。

           找到一个可以加到<head>标签的方法:

            //加入head
            HtmlGenericControl Include2 = new HtmlGenericControl("script");
            Include2.Attributes.Add("type", "text/javascript");
            Include2.InnerHtml = js;
            page.Header.Controls.Add(Include2);

            但是,却无法访问body或者document对象,只能访问form对象,对应的是form标签,或者page.controls,却把代码加到</body>之外了。

            只好测试onload方法,但我不想每次手工给页面的body标签加onload,希望能够纯粹用服务器方式写这个事件处理,结果仍然由于无法访问body标签,无法成功。

          最后的方法,是用RegisterClientScriptBlock,执行一个代码,指定事件的处理,如下:

          page.ClientScript.RegisterStartupScript(typeof(string), "FomrJS", "window.attachEvent('onload', function(){alertWin('标题dfadsa','这里是内容',300,200);})", true);
          或者
 

          page.ClientScript.RegisterStartupScript(typeof(string), "FomrJS", "document.body.onload=function(){alertWin('标题dfadsa','这里是内容',300,200);}", true);


 

posted @ 2008-09-18 11:58  jetz  阅读(2240)  评论(0编辑  收藏  举报