Ant*_*ile 5 javascript intellisense firebug
简单的介绍:
我试图获取函数定义的行号,仅解析文档注释的公共内容.我已经到了可以找到函数名称的地步,如果我想要我可以执行该函数,但我似乎无法找出任何方法来提取行号信息.注意:这纯粹是出于文档目的,因此不需要跨浏览器.
我知道firebug(但不是firebug lite,所以我不知道这是多么可能)显示鼠标悬停时引用函数的行号和脚本位置.我查看了firebug源代码并发现它们调用了(domPanel.js:536),但似乎无法在源代码中找到这个"addMember"函数:
this.addMember(object, "userFunction", userFuncs, name, val, level, 0, context);
Run Code Online (Sandbox Code Playgroud)
可能这是不可能确定的.我的后备正在使用[userfunction].name,[userfunction].toSource()然后尝试匹配源到源.但是我想尽可能避免这些,因为名称可能是非唯一的,而toSource()给出了源后处理.也许有办法绑定firebug api?
最小解释代码:
[注意目标是获取此信息:window.MyWindowObject.PublicFunction: script.js line 3]
的script.js
(function () {
function referencedFunction() {
///<summary>Sample XML Doc Comment</summary>
alert('well hello there!');
}
var publicObject = window.MyWindowObject || {};
publicObject.PublicFunction = referencedFunction;
window.MyWindowObject = publicObject;
}());
Run Code Online (Sandbox Code Playgroud)
index.htm的
<!DOCTYPE html>
<html>
<script src="script.js"></script>
</html>
Run Code Online (Sandbox Code Playgroud)
编辑:对于在稍后搜索时发现此信息的任何人,我发现了一些其他有用的相关信息:
Stacktrace.js:https://github.com/eriwen/javascript-stacktrace - 非常接近但不完全是我想要的,因为它似乎没有获得最终功能的位置.他们网站上的例子不正确(虽然演示"看起来"像我想要的)
在chrome(和IE9)中:[userfunction].toString()保留注释(不在firefox中),这是我最终可能会使用的.我打算使用firefox的[userfunction].toSource(),但这看起来像浏览器操作的函数源.firefox的[userfunction].toString()似乎保留了代码,但删除了注释
Firebug 可以访问普通 JS 无法访问的受保护的 Chrome 功能。
但是,<script>只要同源策略不阻止访问,JS 仍然可以访问原始源码,注释完好无损。
例如,此代码将获取所有嵌入脚本以及从同一域加载的任何脚本的原始源。:
var scipts = document.querySelectorAll ('script');
for (var J = 0, L = scipts.length; J < L; ++J) {
console.log ('Number: ', J);
var node = scipts[J];
if (!node) continue;
if (node.src) {
//$.get (node.src, function (data) {console.log ('Text: ', data); } );
try {
var req = new XMLHttpRequest();
req.open ('GET', node.src, false);
req.send (null);
if (req.status == 200 || req.status == 304)
console.log ('Text: ', req.responseText);
}
catch (err) {
console.log (err);
}
}
else if (node.innerHTML) {
console.log ('Text: ', node.innerHTML);
}
}
Run Code Online (Sandbox Code Playgroud)
然后可以解析原始脚本的行号和函数定义等。