Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/458.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我是否可以检测到javascript未被统一加载(作为调试模式)_Javascript_Debugging_Detection_Bundling And Minification - Fatal编程技术网

我是否可以检测到javascript未被统一加载(作为调试模式)

我是否可以检测到javascript未被统一加载(作为调试模式),javascript,debugging,detection,bundling-and-minification,Javascript,Debugging,Detection,Bundling And Minification,当我在调试模式下运行我的应用程序时,我想提供额外的控制台日志—未统一和未绑定的脚本。有没有一种简单的方法可以在脚本中检测到这一点 我在考虑使用一个长参数名的函数,然后获取该函数的字符串表示形式,检查该参数是否具有长名称,或者在缩小过程中是否更改为较短的版本,因为缩小器会这样做 有更好更简单的方法吗 我希望避免这样一种情况:将全局变量设置为特定值,然后在部署期间忘记重置它。我想要一种可以消除人为错误的防弹方法。你检查一点源代码长度的想法可以奏效 但是,更传统的方法是将全局变量/环境配置外部化为一个

当我在调试模式下运行我的应用程序时,我想提供额外的控制台日志—未统一和未绑定的脚本。有没有一种简单的方法可以在脚本中检测到这一点

我在考虑使用一个长参数名的函数,然后获取该函数的字符串表示形式,检查该参数是否具有长名称,或者在缩小过程中是否更改为较短的版本,因为缩小器会这样做

有更好更简单的方法吗


我希望避免这样一种情况:将全局变量设置为特定值,然后在部署期间忘记重置它。我想要一种可以消除人为错误的防弹方法。

你检查一点源代码长度的想法可以奏效

但是,更传统的方法是将全局变量/环境配置外部化为一个单独的文件,在开发/生产过程中包括:

用于生产的env.js 在开发中使用env.dev.js 在开发中,您的应用程序默认包括env.dev.js。在生产的缩小过程中,您将包含env.js。

缩小检测 正如问题中所提到的,这是我一直在思考的解决方案,并且做得很好。只要缩小算法也缩小函数名和参数,该检测就会按预期工作

window.debugging = (function detect(undefined) {
    // has function itself been renamed?
    if (!detect) return false;
    // has parameter been renamed?
    return /function\s\w+\((\w*)\)/i.exec(detect.toString())[1] === "undefined";
})();
它们具有代码中使用的函数,如:

var debuglog = (function() {
    if (debugging === true)
    {
        return console.log;
    }
    return function() { return; };
})();

如果这只是一个函数,那么我们也可以将其合并到原始检测函数中,这样它就不会返回true/false,而是返回console.log重定向函数或no op函数。

Javascript没有任何内置的缩小概念,也没有标准说明如何实现。因此,我能想到的唯一通用解决方案是您描述的,您在其中测试函数的字符串表示形式。我同意,测试字符串表示形式将是实现这一点的最佳方法,而且可能是我间接想到的唯一方法。在这种情况下,您指的是您创建的缩小文件?还是第三方库?@jwatts1980第三方库也是如此。我知道并不是所有的缩小参数名。。。但我可以接受这一点,因为Asp.NETB&M确实像其他许多人一样改变了这些。