在.aspx文件中:引用了两个.js文件如下:
<HEAD>
<title>view</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" Content="C#">
<meta content="JavaScript" name="vs_defaultClientScript">
<LINK href="../linker/CSS/FONT.css" type="text/css" rel="stylesheet">
<script type="text/javascript" src="walterzorn.js"></script>
<script type="text/javascript" src="wz_jsgraphics.js"></script>
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
在.cs中,需要动态写入<script>语句:
private void writeScript()
{
string str="";
str="<script type='text/javascript'>"
+"<!--"
+"var jg2=new jsGraphics('Rect');"
+"var jg3 = new jsGraphics('Rect');"
+"jg2.setColor('#50db70');"
+"jg2.setStroke(4);"
+"jg3.setColor('#1570a5');"
+"jg3.setFont('verdana,geneva,sans-serif', '12px', Font.BOLD);"
+"jg2.drawRect(0,0,700,500);"
+"function draw(){"
+"var width=80;var lenth=100;var loop = 0;"
+"while (loop < lenth+1){"
+"jg3.drawString(loop+'X',loop*700/lenth,-10); if(loop<width){"
+"jg3.drawString(loop+'Y',-35,loop*700/lenth);}"
+"loop=loop+10;}";
str=str +"drawRect(0,0,100,40);"
+"jg3.drawString('一区', 50, 20);"
+"jg2.drawRect(0,100,100,40);"
+"jg3.drawString('二区', 50, 120);"
+"jg2.drawRect(120,0,80,40);"
+"jg3.drawString('三区', 160, 20);"
+"jg2.drawRect(120,100,80,40);"
+"jg3.drawString('四区', 160, 120);";
str=str+"jg3.paint();"
+"//-->"
+"</script>";
Response.Write(str);
}
其中:
var jg2=new jsGraphics('Rect');
var jg3 = new jsGraphics('Rect');
是对.js文件中的引用。我是在Page_Load方法中调用上面的方法,写入<script>语句的,问题是:
默认的情况下,动态写入的入<script>语句在整个.aspx页面代码的最前面,这个时候,动态加入的<script>语句中需要调用的.JS的内容还没有引用进来,因此<script>语句报错。
请问怎么样来解决这个问题~~急救啊
<HEAD>
<title>view</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" Content="C#">
<meta content="JavaScript" name="vs_defaultClientScript">
<LINK href="../linker/CSS/FONT.css" type="text/css" rel="stylesheet">
<script type="text/javascript" src="walterzorn.js"></script>
<script type="text/javascript" src="wz_jsgraphics.js"></script>
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
在.cs中,需要动态写入<script>语句:
private void writeScript()
{
string str="";
str="<script type='text/javascript'>"
+"<!--"
+"var jg2=new jsGraphics('Rect');"
+"var jg3 = new jsGraphics('Rect');"
+"jg2.setColor('#50db70');"
+"jg2.setStroke(4);"
+"jg3.setColor('#1570a5');"
+"jg3.setFont('verdana,geneva,sans-serif', '12px', Font.BOLD);"
+"jg2.drawRect(0,0,700,500);"
+"function draw(){"
+"var width=80;var lenth=100;var loop = 0;"
+"while (loop < lenth+1){"
+"jg3.drawString(loop+'X',loop*700/lenth,-10); if(loop<width){"
+"jg3.drawString(loop+'Y',-35,loop*700/lenth);}"
+"loop=loop+10;}";
str=str +"drawRect(0,0,100,40);"
+"jg3.drawString('一区', 50, 20);"
+"jg2.drawRect(0,100,100,40);"
+"jg3.drawString('二区', 50, 120);"
+"jg2.drawRect(120,0,80,40);"
+"jg3.drawString('三区', 160, 20);"
+"jg2.drawRect(120,100,80,40);"
+"jg3.drawString('四区', 160, 120);";
str=str+"jg3.paint();"
+"//-->"
+"</script>";
Response.Write(str);
}
其中:
var jg2=new jsGraphics('Rect');
var jg3 = new jsGraphics('Rect');
是对.js文件中的引用。我是在Page_Load方法中调用上面的方法,写入<script>语句的,问题是:
默认的情况下,动态写入的入<script>语句在整个.aspx页面代码的最前面,这个时候,动态加入的<script>语句中需要调用的.JS的内容还没有引用进来,因此<script>语句报错。
请问怎么样来解决这个问题~~急救啊
解决方案 »
- 怎样给控件添加onlbuttonup事件啊?
- ClickOnce部署时怎么设置,客户机才会只下载更新过的文件
- 如何实现使用背景描画直线
- 数据库表中的一条记录的值,如何取呢?(比如审核标记字段的值)
- net内存释放问题,请教!!
- 在VS.net2003里那一个控件是选择文件的呀??
- OWC10中的图表显示的是斜的,怎么设置成正常的呢?
- DataList中放了一个DropDownList怎么数据绑定DropDownList
- 时间格式经过jsonhelper转换以后,变成了另一种格式,求怎么转回来
- Form2里如何调用定义在Form1里的类
- 请诸位指点,急!(怎样用C#编写倒数据?)
- 哪为朋友有建C#的技术讨论群??+++
在Asp.net代码中调用javascript自写函数可以使用这两个函数Page.RegisterClientScriptBlock()和Page.RegisterStartupScript()来调用。这两个函数具体的调用方法可以查MSDN
希望对你有帮助
http://spaces.msn.com/members/hjf1223
一般来说有三种情况
(1)在前台放置<asp:Literal Runat="server"></asp:Literal>指定位置输出
(2)后台通过RegisterStartupScript和RegisterClientScriptBlock输出
(3)Response.Write输出
举例如下
(1)
前台
<asp:Literal ID="myLiteral" Runat="server"></asp:Literal>
后台
this.myLiteral.Text+="<script>alert('test');</script>";
查看源代码可以看到原来的
<asp:Literal ID="myLiteral" Runat="server"></asp:Literal>
位置变成了
<script>alert('test');</script>
(2)
为了更加清楚看到两个的区别,前台如下
<form id="Form1" method="post" runat="server">
<input type="hidden" value="test" id="myhiden">
</form>
后台如下
Page.RegisterStartupScript("","<script>alert('RegisterStartupScript:'+document.all.myhiden.value)</script>");
Page.RegisterClientScriptBlock("","<script>alert('RegisterClientScriptBlock:'+document.all.myhiden.value)</script>");
结果如下:只出现对话框显示RegisterStartupScript:test
查看源代码如下:
<form name="Form1" method="post" action="WebForm4.aspx" id="Form1">
<input type="hidden" name="__VIEWSTATE" value="dDwtNjU0MzcyMTk1Ozs+NmbLf6dWkF/Q/FLKKsdPPfhFXr0=" />
<script>alert('RegisterClientScriptBlock:'+document.all.myhiden.value)</script>
<input type="hidden" value="test" id="myhiden">
<script>alert('RegisterStartupScript:'+document.all.myhiden.value)</script>
</form>
两者区别不用多说了吧
(3)
我们再加一句Response.Write("test")
查看源代码发现test字样出现在最前面
test
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
用它来输出转向代码比较合适
<script>location.href='page.aspx'</script> 最后在提醒一下大家,有很多人在给一个控件加js代码的时候会这么写:
this.mybody.Attributes["onclick"]="<script>alert('test');</script>";
这么写是不对的
应该是
this.mybody.Attributes["onclick"]="alert('test');";
比如你在前台书写<a onclick=>的时候你会写<a onclick='<script>alert('test')<script>'>吗?
道理是一样的!
但是相反,有的人在
Page.RegisterStartupScript("","<script>alert('test');</script>");的时候不写里面的<script>也是不行的
(虽然名字叫Register...Script)