1.htm源码如下:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>无标题页</title>
    <script id="a" type="text/javascript" ></script>
    
    <script type="text/javascript">
        function s()
        {
            document.getElementById("a").src="Abc.aspx?v="+document.getElementById("tx").value;
            
            abc();
        }
    </script>
</head>
<body>
    <input type="text" id="tx">
    <input type="button" onclick="s()" value="确定">
</body>
</html>
Abc.aspx 源码如下:<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Abc.aspx.cs" Inherits="Default2" %>
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;public partial class Default2 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        Response.Write("function abc(){alert('"+Request.QueryString["v"]+"')}");
    }
}问题是,我一次点击按钮时报错,再点击一次才能获到值。
我的判读是第一次点击按钮时 Abc.apsx 页面的load事件还没执行完,所以就调不到 js 的abc()
方法。
怎么解决这个问题啊??

解决方案 »

  1.   

    稍微改动一下就可以了,但感觉不好。改动如下:
    我把 1.html 中的 s()方法替换成如下:function f()
            {
                document.getElementById("a").src="Abc.aspx?v="+document.getElementById("tx").value;
                
                a();
            }
            
            function a()
            {
                timer=setTimeout("a()",50);
                
                if((typeof js)+""!="undefined")
                {
                    abc();
                    
                    //
                    clearTimeout(timer);
                    js=undefined;
                }
            }
    把Abc.aspx.cs 代码替换成如下:using System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;public partial class Default2 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            Response.Write("function abc(){alert('"+Request.QueryString["v"]+"')}");        Response.Write("var js='js'");
        }
    }
      

  2.   

    Response.Write("function abc(){alert('"+Request.QueryString["v"]+"')}");=》Response.Write("function abc(){alert('"+Request.QueryString["v"]+"')} callBack();");
    Response.End();<script type="text/javascript">
            function s()
            {
                document.getElementById("a").src="Abc.aspx?v="+document.getElementById("tx").value;
                
                abc();
            }
        </script>=><script type="text/javascript">
            function s()
            {
                document.getElementById("a").src="Abc.aspx?v="+document.getElementById("tx").value;            
                
            }
            function callBack()
            {
                   abc();
             }
        </script>
      

  3.   

    火狐上,第一次可以动态加载,以后再动态加载就不行了document.getElementById("a").src="Abc.aspx?v="+document.getElementById("tx").value; 
      

  4.   

    午休去吃饭了
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>无标题页</title>    <script type="text/javascript">
            function s() {
                replaceScript('a', "JavaScript.aspx?v=" + document.getElementById("tx").value);
            }
            function callBack() {
                abc();
            }
            function replaceScript(id, src) {
                var newScript = document.createElement('script');
                var oldScript = document.getElementById(id);
                newScript.type = "text/javascript";
                newScript.src = src;
                newScript.id = id;
                document.getElementById('div').replaceChild(newScript, oldScript);
            }
        </script></head>
    <body>
        <div id="div">        <script id="a" type="text/javascript"></script>    </div>
        <input type="text" id="tx">
        <input type="button" onclick="s()" value="确定">
    </body>
    </html>