function AddScript() {
    var t='';
    this.Add = function(src) {
        var scpt = document.createElement('script');
        scpt.src = src;
        scpt.type = 'text/javascript';
        document.body.appendChild(scpt);
    }
    this.play = function(str_fun) {
        setTimeout(function() { eval(str_fun); }, 10);
    }
}
function ShowPanle() {
    var i = new AddScript();
    i.Add('js/JScript1.js');
    i.play('a()');
}上面是我的代码 js/JScript1.js 文件里有一个方法
function a() {
    alert('你爷爷的!');
}IE系列一点问题都没有,
 <input id="Button1" type="button" value="button" onclick="ShowPanle()" /> 火狐按下按钮后,第一次会报错
a is not defined如果再按下按钮,会正确执行希望高手帮我解决这个问题,如果能详细说明其中的原理,再加50分

解决方案 »

  1.   


    <script type="text/javascript">
    function AddScript() {
        var t='';
        this.Add = function(src) {
            var scpt = document.createElement('script');
            scpt.setAttribute('src',src);
            scpt.setAttribute('type','text/javascript');
            document.body.appendChild(scpt);
        }
        this.play = function(str_fun) {
            setTimeout(function() { eval(str_fun); }, 10);
        }
    }
    function ShowPanle() {
    var i = new AddScript();
    i.Add('js/JScript1.js');
    i.play('a()');
    }

    //上面是我的代码 js/JScript1.js 文件里有一个方法

    </script>
      

  2.   

    a is not defined
    eval()2 (第 1 行)
    anonymous()Login.js (第 34 行)
    [Break on this error] setTimeout(function() { eval(str_fun); }, 5);\r\n不要意思,我使用的是这个版本的火狐
    Mozilla/5.0 (Windows; U; Windows NT 5.2; zh-CN; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2
      

  3.   

    <script type="text/javascript">
            function AddScript() {
        var t='';
        this.Add = function(src) {
            var scpt = document.createElement('script');
            scpt.setAttribute('src',src);
            scpt.setAttribute('type','text/javascript');
            document.body.appendChild(scpt);
        }
        this.play = function(str_fun) {
            setTimeout(function() { eval(str_fun); }, 10);
        }
        }
        function ShowPanle() {
            var i = new AddScript();
            i.Add('js/JScript1.js');
            i.play('a()');
        }
        
        //上面是我的代码 js/JScript1.js 文件里有一个方法
        
    </script>
    楼主你试我这个了吗?
      

  4.   

    MuBeiBei兄弟的方法也使用过了,还是一样的
      

  5.   

    可能是i.Add('js/JScript1.js');
    加载和分析过程比较慢,而函数执行确实非常快的。
    就是说
    i.Add('js/JScript1.js');还没有解析完而
     i.play('a()');这一句应经执行了。