例:
  假如我往页面动态加载了一个
<script language="JavaScript" id="jsobj" type="text/javascript">
  var a=0;
  var b={uu:"ss"};
  function c()
  {
     alert("d");
  }
</script>
但是我并不知里面定义了什么,我要如何遍历其中的对象或函数?能通过 id="jsobj" 来处理吗?

解决方案 »

  1.   

    加载之前
    for(p in window)
    存进一个object类型变量preVariables
    加载之后
    for(p in window)
    preVariables里面没有的,就是新加载进来的。
      

  2.   

    上楼可能误解了我要表达的,我现在是直接把一大段字符串加载在页面底部,只能知道加载后就是一段标准的可调用的js代码,但是原则上并不知里边有什么,虽然我可以通过eval去找出其中想要的对象,但我更想做的是不通过eval而遍历出js加载后的所有对象或属性
      

  3.   

    当你动态加载了一个js文件之后。
    所有.js里面声明的全局函数都成了window的属性
    var s = 5656;
    function a(){alert('我是a')};
    都可以用
    alert(window['s']);
    window['a']();
    来获取和调用。
    所以只需要判断加载前后window多出来哪些属性就可以了。
    又哪里来的eval一说?eval只是在ajax获取到js的时候使用的。
    用script标签加载的不需要eval
      

  4.   

    我这些js正是通过ajax来获取的,你说的是在知道了对象名的情况下才可以这么处理,我现在是原则上并不知道加载的是什么...所以才需要试下遍历,我比较怀疑我设想的可行性
      

  5.   

    ajax获取数据后...var TScript = document.createElement('script'); 
    TScript.language = "javascript"; 
    TScript.type = "text/javascript"; 
    TScript.defer = true; //看情况再加
    TScript.id=params[4];//动态参数
    TScript.text = obj.responseText;//js主体
    document.body.parentNode.appendChild(TScript);