可以使用window对象的location对象的里的href来获取当前页面的URL地址。
工具原料:编辑器、浏览器
1、Location 对象包含有关当前 URL 的信息,Location 对象是 Window 对象的一个部分,可通过 window.location 属性来访问,代码示例如下:
<html><head><script type="text/javascript">
<script>
alert(window.location.href)
</script>
</script>
</head>
<body>
test
</body>
</html>
2、运行的结果如下图:
只是个最基础的想法了。具体的实践稍微复杂一些:1 如果script是用src引入的,还要用xhr或者json方式来获得text,可能还需要搭个后台代理。
2 如果function是在命名空间的,可以直接递归for in命名空间去挖里面的public函数出来。
3 private的函数我看就算了,私有函数应该对自己负责,我们没有必要非去整人家的私货。
<HTML>
<BODY>
<SCRIPT LANGUAGE="JavaScript">
<!--
function a(x,y,z){return b(x,y)*c(z)}
function b(x,y){return c(x)*c(y)}
function c(x){return x+x}
setTimeout("alert(a(1,2,3))",0)
//-->
</SCRIPT>
<SCRIPT LANGUAGE="JavaScript">
<!--
(function (){
window._log=[]
function obj2str(o){
var r = []
if(typeof o =="string") return "/""+o.replace(/([/'/"//])/g,"//$1").replace(/(/n)/g,"//n").replace(/(/r)/g,"//r").replace(/(/t)/g,"//t")+"/""
if(typeof o =="undefined") return "undefined"
if(typeof o == "object"){
if(o===null) return "null"
else if(!o.length){
for(var i in o)
r.push(i+":"+obj2str(o[i]))
r="{"+r.join()+"}"
}else{
for(var i =0i<o.lengthi++)
r.push(obj2str(o[i]))
r="["+r.join()+"]"
}
return r
}
return o.toString()
}
唯一可能的方法是从html里的<script>里找。js本身无法获取自己路径。
var scripts = document.getElementsByTagName('script')// 获取现在已经加载的所有script
var lastScript = scripts[scripts.length-1]
// 获取最近一个加载的script,即这个js本身
var scriptName = lastScript.src
// 获取此js的路径
之后对路径做处理切割出来文件名就容易了。
这段代码一般是没问题的。