您的位置:首页 > Web前端 > JavaScript

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

2008-09-18 11:58 435 查看
本来不是一个很复杂的事情,就是想通过服务器的代码,控制客户端加载时运行一个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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: