【发布时间】:2014-09-17 23:01:19
【问题描述】:
我想知道是否有办法检查是否从浏览器的控制台或源代码调用了 javascript 函数。
我定义了一个函数,可以检查它是来自控制台还是来自页面,但它只适用于谷歌浏览器,它不适用于 Firefox,我没有测试其他浏览器
function fromConsole()
{
var Caller = arguments.callee.caller;
while(Caller.caller != null)
Caller = Caller.caller;
return (Caller.toString().indexOf("function (expression, objectGroup,"))!=-1;
}
这个函数的工作原理
这个函数查找调用我们函数的顶部函数。在谷歌浏览器中,如果从控制台调用顶部函数的定义在Firefox中包含此字符串function (expression, objectGroup,,则没有函数
让我给你详细解释一下
假设我们有这个例子
function a()
{
b();
}
function b()
{
return c();
}
function c()
{
console.log(fromConsole());
}
如果我们从页面调用函数 a() ,它在控制台中显示为 false (因为顶部函数是 a() )但是,如果我们从控制台调用它,它显示为 true,因为顶部函数是 this " function (expression, objectGroup,..."
在 Firefox 中,无论您是从控制台还是从您的页面调用函数,顶级函数始终是 a()
我的问题是:有没有办法知道函数是否从控制台调用?
【问题讨论】:
-
我认为“console.error('hello world')”也许可以帮助你。它会像这样在浏览器上回溯:screenshot
-
在 Firefox 中它不会回溯。我需要一个不能手动完成的功能
-
你想解决什么问题?
-
如果您尝试进行某种反作弊,Chrome 允许用户就地编辑 JavaScript,从而可以在代码中添加函数调用。也有代理服务器可以更改传输中的脚本。
标签: javascript google-chrome firefox google-chrome-devtools firefox-developer-tools