比如说有几个页面1 a.html a.html需要调用b.js
用此种方法来调用
<script language="javascript" src="b.js"></script>2. b.js 里面需要调用外站的一个javascript,这个函数不能修改,不能直接考到b.js中这里来如何调用 c.js3.c.js 为外站的一个js代码,utf-8编码(编码不是问题),不能直接考备问题是 b.js如何动态调用 c.js,并且在b.js中执行c.js中定议的函数动态创建的方式都试了不行,
第1种方法
var elScript = document.createElement('script');
elScript.src = url;
document.body.appendChild(elScript);第2种方法document.write('<script language=...')这两种方方法都试了,虽然可以加载c.js ,但不能在b.js 中来控制c.js中的函数不知道大家看懂了没有

解决方案 »

  1.   

    昏,你可以把c.js下载下来用啊,同样你也可在a.html中用<script language="javascript" src="http://www.XXX.com/b.js"></script>这样就可以在b.js中调用c.就是的方法了,
      

  2.   


    您是要调用c.js的方法,还是要动态修改c.js里的方法
      

  3.   

    如果在b.js不能调用c.js的话,您可以尝试在a.html直接<script>
    /*
    这里直接调用c.js的方法  
    */
    </script>理论上将能加载的js文件都可以调用其方法的
      

  4.   

    但不能在b.js 中来控制c.js中的函数这句话不是很明白 能再讲讲吗? 控制指的是调用还是?
      

  5.   

    document.body.appendChild(elScript);会不会是这句的原因呢? 这句的效果可能会产生类似的效果<script src="b.js">
    c("call")
    </script><script src="c.js">
    var c = function(){}
    </script>也就是说 你在b文件里。调用c 文件的一些方法。而这个方法还没被赋值。因为调用在赋值之前
      

  6.   

    var elScript = document.createElement('script');
    elScript.src = url;//document.body.appendChild(elScript);
    document.body.insertBefore(elScript, document.getElementsByTagName("script")[0]);
      

  7.   


    var elScript = document.createElement('script');
    elScript.src = url;//document.body.appendChild(elScript);
    //document.body.insertBefore(elScript, document.getElementsByTagName("script")[0]);  //sorry
      

  8.   

     我想在a.html上尽量小写代码,或者不写,直接全部在b.js中进行操作 var elScript = document.createElement('script');
     这种语法是没有问题的大家可以在本机上写简单的语句调式下 c.js可以用最简单的方法来测试下,用本机的地址就行,比如function test(){}这样也是出错的别外 c.js不是固定的JS文件,是通过程序动态生成的js,不能直接复制,必须远程调用
      

  9.   

    我写个例子a.html<body>
    <script language="javascript" src="b.js"></script>
    </body>c.js
    function test(){
    alert("ok?")
    }b.js 由于b是js文件不能用<script src="c.js">这样的写法
    我想在b.js中调用 c.js 并且在b.js代码中执行c.js的 test()函数不知道 能不能使现
      

  10.   

    在HTML里:<script language="javascript" src="c.js"></script>
    <script language="javascript" src="b.js"></script>确保先载入C后载入B,就能在B里调用C的函数了。
      

  11.   

    因为b是js,所以不能这样加载c
    <script language="javascript" src="c.js"></script>
      

  12.   

    document.body.app..
    首先不是在body上添加,应该是往head上加
    var head = document.getElementsByTagName('head')[0];不知你是怎么调用c里面函数的
    是在
    document.body.appendChild(elScript);
    之后马上调用c里的函数吗? 这样的话因为这是一个异步过程所以调用会失败, 期间浏览器还在发请求拿c.js内容,等拿到时会有一个 elScript.onreadystatechange 回调(貌似叫这个), 可以调用c里函数的代码写在这个回调中
    另一种方法是前台发送请求到后台,由后台拿c.js内容content返回给前台,前台
    var elScript = document.createElement('script');
    elScript.text = content;//这是个同步的过程
    document.body.appendChild(elScript);
    callFunctionInC()
      

  13.   

    你第2中方式不太适合你的使用,因为在载人页面后,浏览器输出流自动关闭;在此之后,你的document.write()方法将打开—个新的输出流。它将清除当前页面内容(包括源文档的任何变量或值),所以会出现你的不能调用C的中方法。而你的第1中方式,是可以的,但你的顺序应该有问题,因为 js 是解释型语言
    所谓解释型语言,就是代码在执行时才被解释器一行行动态编译和执行,而不是在执行之前就完成编译。简单说,解释型语言就是边编译边执行,你要确保你在b中开始调用C方式的时候,此时的c已经被动态地编译和执行了。才可以。所以你要控制好知性顺序应该没问题
      

  14.   


    方法我找到了,是跟面序有关系,并且还得判断是什么事件
    if (navigator.userAgent.indexOf("IE") >= 0)
            elScript.onreadystatechange = function()
            {结贴
      

  15.   

    这里来如何调用外站的一个js代码 c.js.动态创建的方式都试了不行,
    ---------
    其实你问的问题不准确,如何动态创建引用SCRIPT元素,你是知道的.只是这里对外部的JS存在一个下载过程.如果下载过程不是特别快,紧接着的调用就会出错.
    所以,问题是如何在等到外部JS加载了之后再调用其中的方法.
    这个,可以用AJAX解决,在接收数据完毕之后的事件里进行调用即可.
      

  16.   

    用AJAX解决,在接收数据完毕之后的事件里进行调用即可.标红的这块说得可能不太明白.AJAX接受到整个JS后,利用上面创建SCRIPT的方法,添加到页面里,然后调用.