如何知道何时从控制台调用JavaScript函数
How to know when a JavaScript function is called from a console?
我希望一个特定的JavaScript函数的行为不同,这取决于它是在从HTML页面引用的JavaScript代码中调用还是从控制台调用。这可能吗?如下所示:
function mySpecialFunc() {
if (inConsole())
console.log("You called me from the console!");
else
console.log("You called me from an HTML page or a JavaScript file linked from an HTML page, I think.");
}
是否存在与上述inConsole()
函数等价的函数?
这是否只存在于Chrome或Firefox中?
一种方法是抛出错误并检查堆栈跟踪,以查找控制台注入所特有的字符串。比如"InjectedScript"
下面是一个有效的例子。
var f = function(){
var injected;
try {
throw new Error();
} catch (e) {
injected = e.stack.match('InjectedScript');
}
if (injected) {
console.log("Called from console");
} else {
console.log("Called from code");
}
}
// Add it to window so we can call it from the console.
window.f = f;
f();
不幸的是,没有办法通过系统输入来判断,但你可以在某种意义上使用溢出/过载函数"手动"完成。这里有一个关于如何在js中使用overflow/overload的优秀教程。
所以在javascript中调用函数的代码中添加一个额外的参数来告诉函数它不是从控制台调用的。
mySpecialFunc() <---- From console
mySpecialFunc(value) <---- From code
相关文章:
- 我需要从php调用javascript或jquery
- 如何在webView,Android中从@JavascriptInterface方法调用Javascript
- 使用html表单中的参数调用JavaScript函数
- 可以´t调用JavaScript中的函数
- 在按钮上调用Javascript函数
- 如何从Objective-C代码中调用javascript代码
- 当库在页脚中加载时,基于PHP条件调用Javascript
- 可以't在Jasmine中调用Javascript函数
- 在page_load事件上调用javascript函数
- 如何在ajax中调用javascript对象的方法
- 如何使用WPF调用JavaScript对象的函数
- 我们可以用参数对象集合而不是原始数据来调用JavaScript collection.reduce()方法吗
- 在新的浏览器选项卡上加载新的aspx页面后调用JavaScript函数
- 从附加文本调用javascript(订单车)
- 在线程循环中调用JavaScript
- 在指定时间后多次调用Javascript中的函数
- 未调用Javascript onscroll事件
- 如何正确调用Javascript中的匿名函数
- 从字符串调用javascript函数
- 无法从活动调用 javascript 函数