动态向页面加载了一个规范的js文件,如何遍历其中定义的属性或函数?

一经注册不得修改 2011-05-05 11:07:18
例:
假如我往页面动态加载了一个
<script language="JavaScript" id="jsobj" type="text/javascript">
var a=0;
var b={uu:"ss"};
function c()
{
alert("d");
}
</script>
但是我并不知里面定义了什么,我要如何遍历其中的对象或函数?能通过 id="jsobj" 来处理吗?
...全文
179 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
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);
  • 打赏
  • 举报
回复
我这些js正是通过ajax来获取的,你说的是在知道了对象名的情况下才可以这么处理,我现在是原则上并不知道加载的是什么...所以才需要试下遍历,我比较怀疑我设想的可行性
Crazywa 2011-05-05
  • 打赏
  • 举报
回复
当你动态加载了一个js文件之后。
所有.js里面声明的全局函数都成了window的属性
var s = 5656;
function a(){alert('我是a')};
都可以用
alert(window['s']);
window['a']();
来获取和调用。
所以只需要判断加载前后window多出来哪些属性就可以了。
又哪里来的eval一说?eval只是在ajax获取到js的时候使用的。
用script标签加载的不需要eval
  • 打赏
  • 举报
回复
上楼可能误解了我要表达的,我现在是直接把一大段字符串加载在页面底部,只能知道加载后就是一段标准的可调用的js代码,但是原则上并不知里边有什么,虽然我可以通过eval去找出其中想要的对象,但我更想做的是不通过eval而遍历出js加载后的所有对象或属性
Crazywa 2011-05-05
  • 打赏
  • 举报
回复
加载之前
for(p in window)
存进一个object类型变量preVariables
加载之后
for(p in window)
preVariables里面没有的,就是新加载进来的。
  • 打赏
  • 举报
回复
那应该通过什么?还是说这种思路本身就是错的?
xuexiaodong2009 2011-05-05
  • 打赏
  • 举报
回复
不能通过 id="jsobj"
  • 打赏
  • 举报
回复
没人打算继续讨论下么...

87,922

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧