我也考虑过这个问题,因此改了function,加了如下随机数,但还是不成。
function myclick(){
      var par2 = Math.random(); 
      par2 = par2 * 1000000000;
      var url = "a.js";
      url = url + '?par2=' + par2;
      document.getElementById("thejs").src=url;
}

解决方案 »

  1.   

    才存一个b.js看,能否弹出.
    咋看咋觉得这样实现有点别扭...
      

  2.   

    以前用ajax从服务器调出JS function用eval接收能成功,这种也觉得别扭没试验过,有人说createElement("script")能行,也没去尝试,觉得这样都一样存了缓存,没必要多此一举了,不想保留缓存就用eval吧
      

  3.   

    测试了一下,
    貌似ff只加载一次<script type="text/javascript" id="thejs"></script>
    后面无论怎么改src值,只改变html不会再次加载内容,
    而相同的操作应于iframe是没有异常的还是使用ajax方法吧
      

  4.   

    并不是要实现那个alert才这么做的,而是有其他的用途采用重载JS文件。
    AJAX其实也想过,但是不太想这么做,不知道有没有什么解决方法?最终目的就是可以多次执行一个点击后产生的新的JS文件。
      

  5.   

    把a.js里的内容封装到函数内吧!
    a.js:
    function show(){
    alert('我执行了!');
    }b.html:
    function myclick(){
            document.getElementById("thejs").src="a.js";
            show();
    }
      

  6.   

    对了,a.js这个文件是我无法改变的。只能改变b.html。
      

  7.   

    我在ff上调试这段代码时,发现每次点击,document.getElementById("thejs").src都会被改变,但是只有第一次载入时执行了,再点击,就只改变js文件地址,但没有实际执行。不知道是不是顺序问题,或者需要别的什么。注意a.js是不能改变的,因为是别人动态生成的。<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <title>测试</title>
    <script type="text/javascript" id="thejs"></script>
    <script type="text/javascript">
    function myclick(){
            var par2 = Math.random(); 
          par2 = par2 * 1000000000;
            var url = "a.js";
          url = url + '?par2=' + par2;
            document.getElementById("thejs").src=url;
    //      show(); 
    }
    </script>
    </head>
    <body>
    <input type="submit" value="查询" onClick="javascript:myclick();" />
    </body>
      

  8.   

    firebug显示src已经被改成了a.js,但是里面的内容没有执行而已。不知道怎么写,已经很久没有直接js裸奔了,都是jquery,。。
      

  9.   

    是的,我就是这么测的,src改是改了,可是不执行
    盼达人。这个实现不了,我的网页在ff上就玩不转
      

  10.   

    是需要动态创建<script> 才可以的.如下就可以了:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
    "http://www.w3.org/TR/html4/loose.dtd"> 
    <html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> 
    <title>测试 </title> 
    <script type="text/javascript"> 
    function myclick(){  var oldS=document.getElementById('thejs');
    if(oldS) oldS.parentNode.removeChild(oldS); var t=document.createElement('script');
    t.src='a.js';
    t.type='text/javascript';
    t.id="thejs";
    document.getElementsByTagName('head')[0].appendChild(t);        //document.getElementById("thejs").src="a.js"; 

    </script> 
    <script type="text/javascript" id="thejs"> </script> 
    </head> 
    <body> 
    <input type="submit" value="查询" onClick="javascript:myclick();" /> 
    </body>
      

  11.   

    非常感谢!这个可以。先结贴!可是我还是不明白为什么?这种方法好像也见过,不过我觉得跟原来那种没区别所以没在意。现在还是迷惑
    ff必须要重新创建一次script才能执行么?他为什么不能像IE一样当src改变时重新载入呢?
    能否指点一下,谢谢!
      

  12.   

    我也是用 dom 的方法实现的
    可惜实现后因为其它莫名其妙的原因有问题
      

  13.   

    调出Firefox错误控制台,你会发现是document.getElementById("thejs")的问题