我在aspx.cs后台页面的page_load事件中不能调用前台的javascript函数?是不是要用到ajax?代码是这样的:
page_load事件中
ClientScript.RegisterStartupScript(this.GetType(), "myscript", "<script language='javascript'/>
Init()</script>");
前台Javascript函数要调用一个activex控件
function Init(){
 var n=new ActiveXObject( "myActivex");
 n.Client_Init();
 alert('success'); 
}

解决方案 »

  1.   


    ClientScript.RegisterStartupScript(this.GetType(), "2", "<script> alert('在这样调用');</script>");
      

  2.   


    ClientScript.RegisterStartupScript(ClientScript.GetType(), "myscript", "<script type='text/javascript'>Init();</script>");
      

  3.   

    你在body的onload事件中加入这个不就可以了吗,为什么非得后台来加载呢?如果非得这样写的话,你试试Response.write("<script>Init()</script>");
      

  4.   

    Response.Write("<script>alert('Hello')</script>");这种方法也可以,但不建议。
      

  5.   

    上面的方法都试过了,不行。
    一是、现在要在前台用Javascript调用activex控件,activex控件的方法中含有参数为byte[]数组。用Javascript调用,要怎么将byte[]数组传递给Javascript,然后Javascript将参数传递给activex控件的方法,并获取该activex控件的方法的返回值
    二是、要在aspx.cs后台页面调用Javascript函数,获取Javascript函数的返回值Javascript代码如下:   
        function Init(Src,Result)
        { 
             var Pc=document.getElementById("myActivex");
             var result= Pc.ExecuteCnd(Src,Result);   //activex方法参数为byte类型,返回byte类型的值
             return result;      
        }
    后台代码如下:
    byte Src=100;
    byte Result=101;
     ScriptManager.RegisterStartupScript(this, this.GetType(), "cmd", "Init('"+Src+"','"+Result+"');", true);//调用前台Js并传递参数给JS的方法
    出现类型不匹配
    请教各位大虾!!!!
      

  6.   

    1.使用Page.ClientScript.RegisterClientScriptBlock
    c#
    代码1 <%@ Page Language=”C#” %>
    2  <script runat=”server”>
    3  protected void Page_Load(object sender, EventArgs e)
    4 {
    5  string myScript = @”function AlertHello() { alert(‘Hello ASP.NET’); }”;
    6 Page.ClientScript.RegisterClientScriptBlock(this.GetType(),
    7 “MyScript”, myScript, true);
    8 }
    9 </script>
     
    运行结果如下:
    <html xmlns=”http://www.w3.org/1999/xhtml” >
    <head><title>
    Adding JavaScript
    </title></head>
    <body>
    <form method=”post” action=”JavaScriptPage.aspx” id=”form1”>
    <div>
    <input type=”hidden” name=”__VIEWSTATE”
    value=”/wEPDwUKMTY3NzE5MjIyMGRkiyYSRMg+bcXi9DiawYlbxndiTDo=” />
    </div>
    <script type=”text/javascript”>
    <!--
    function AlertHello() { alert(‘Hello ASP.NET’); }// -->
    </script>
    <div>
    <input type=”submit” name=”Button1” value=”Button” onclick=”AlertHello();”
    id=”Button1” />
    </div>
    </form>
    </body>
    </html>2.使用Page.ClientScript.RegisterStartupScriptRegisterStartupScript 方法与RegisterClientScriptBlock方法最大的不同是:RegisterStartupScript 把script放置在 ASP.NET page的底部,而RegisterClientScriptBlock把script放置在ASP.NET page的顶部。如果你的页面中有如下代码:
    <asp:TextBox ID=”TextBox1” Runat=”server”>Hello ASP.NET</asp:TextBox>c#
    protected void Page_Load(object sender, EventArgs e)
    {
      string myScript = @”alert(document.forms[0][‘TextBox1’].value);”;
      Page.ClientScript.RegisterClientScriptBlock(this.GetType(), “MyScript”, myScript, true);
    }
    此页面运行时会报错,原因是JavaScript function先于text box被安放于浏览器。因此JavaScript function找不到TextBox1。
    c#protected void Page_Load(object sender, EventArgs e)
    {
      string myScript = @”alert(document.forms[0][‘TextBox1’].value);”;
      Page.ClientScript.RegisterStartupScript(this.GetType(), “MyScript”, myScript, true);
    }
    这段代码把JavaScript function放置于ASP.NET page底部,因此JavaScript运行时它能找到TextBox1。3.使用Page.ClientScript.RegisterClientScriptInclude许多开发者把JavaScript放置在.js文件中,使用RegisterClientScriptInclude方法可以注册.js文件中的JavaScript。
    c#
    string myScript = “myJavaScriptCode.js”
    Page.ClientScript.RegisterClientScriptInclude(“myKey”, myScript);
    这将在ASP.NET页面产生如下结构:
      <script src=”myJavaScriptCode.js” type=”text/javascript”></script>
      

  7.   

    用ScriptManager.RegisterStartupScript