考虑这些脚本片段。
<script data-name="script1">
foo();
</script>
<script data-name="script2">
foo();
</script>
<script>
function foo(){
// console.log(arguments.?);
}
</script>
有没有办法找出从“//”表示的行调用哪个脚本函数foo?
答案 0 :(得分:2)
正如评论中已经提到的,你呈现它的方式,这是不可能的,它只有在函数调用函数foo
时才有效,当然这对于每个函数都必须是一个不同的函数脚本,然后你可以使用
console.log(arguments.callee.caller.name)
这将为您提供调用函数foo的函数的名称。
编辑:实际上,如果知道调用脚本的位置很重要,只需使用一个参数,如function foo(caller){
,它指示函数的调用方式,这比依赖{{1}更安全。事情。
答案 1 :(得分:0)
好的,我想通了,这将获取脚本数据名称属性
function foo() {
var parentScript = document.body.lastChild;
console.log(parentScript.getAttribute('data-name'));
}
为了让它工作,我不得不在调用它之前定义foo函数,但我确信一些玩它可以解决它。