(function() { function getcurrentscript(base) { if (document.currentscript) { return document.currentscript.src; //ff,chrome }; var stack; try { a.b.c(); //强制报错,以便捕获e.stack } catch (e) { //safari的错误对象只有line,sourceid,sourceurl stack = e.stack; if (!stack && window.opera) { //opera 9没有e.stack,但有e.backtrace,但不能直接取得,需要对e对象转字符串进行抽取 stack = (string(e).match(/of linked script \s+/g) || []).join(" "); } } if (stack) { /**e.stack最后一行在所有支持的浏览器大致如下: *chrome23: * at http://hostname/data.js:4:1 *firefox17: *@http://hostname/query.js:4 *opera12:http://www.oldapps.com/opera.php?system=windows_xp *@http://hostname/data.js:4 *ie10: * at global code (http://hostname/data.js:4:1) * //firefox4+ 可以用document.currentscript */ stack = stack.split(/[@ ]/g).pop(); //取得最后一行,最后一个空格或@之后的部分 stack = stack[0] === "(" ? stack.slice(1, -1) : stack.replace(/\s/, ""); //去掉换行符 return stack.replace(/(:\d+)?:\d+$/i, ""); //去掉行号与或许存在的出错字符起始位置 } var nodes = (base ? document : head).getelementsbytagname("script"); //只在head标签中寻找 for (var i = nodes.length, node; node = nodes[--i]; ) { if (node.readystate === "interactive") { return node.src; } } } var _cms = window.cms; var jspath = getcurrentscript(true); var scripts = document.getelementsbytagname('script'), script = scripts[scripts.length - 1]; if(!jspath){ jspath = script.hasattribute ? script.src : script.getattribute('src', 4); //ie下通过getattribute('src', 4)才能获取全路径 } var contextpath = script.getattribute('contextpath'); script=null; //将uri处理为符合变量命名规则的字符串,可作前缀用于创建各页面不同复的命名空间或对象 /*