在.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>语句报错。
请问怎么样来解决这个问题~~急救啊
解决方案 »
- OleDbParameter的生命周期问题
- 为何ajax调用form中的html元素会出错
- 生成XML时,如何自动读取图片的宽和高 向各位大虾求救了
- 怎样解决程序目录下bin的问题
- Word应用编程(如果用C#生成Word文件时候,如果在一个documnet中生成多表格的问题)解决了再送100
- 用asp.net编程实现Access数据库恢复的问题
- Redirect好奇怪的问题,大家帮忙瞧瞧
- Devexpress的AspxGridView控件,怎么添加提示功能?
- asp.net checkbox 代码中设置checked不触发事件CheckedChanged
- 如何登出后,回到原来的LOGIN.ASPX?
- 未将对象引用设置到对象的实例。 怎么办????
- 【求助】使用VS。NET遇到难题了,大家帮忙啊,在线等待结果!!
一般来说有三种情况
(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)
一般来说有三种情况
(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)
<%=str%>
this.Label1.Text = "你的脚本";此法经过验证,没有问题,当然楼上的办法也可以.