2016-09-20 203 views
0

我将时间戳添加到JS和CSS标记。如果文件被改变,它允许总是有最新的代码。但是,它不允许在开发人员控制台中调试JS。使用document.writeln添加脚本不允许在开发人员工具中调试

的index.html

<head> 
<script type="text/javascript"> 
    //if not developer mode add timestamp to prevent caching 
    var bDeveloperMode=true; 
    var timeStamp = !bDeveloperMode ? ('?_=' + new Date()).valueOf() : ''; 

    document.writeln('<scr' + 'ipt type="text/javascript" src="../js/someScript.js' + timeStamp + '"></scr' + 'ipt>'); 
    document.writeln('<scr' + 'ipt type="text/javascript" src="../js/someScript2.js' + timeStamp + '"></scr' + 'ipt>'); 
    document.writeln('<scr' + 'ipt type="text/javascript" src="../js/someScript3.js' + timeStamp + '"></scr' + 'ipt>'); 
    document.writeln('<scr' + 'ipt type="text/javascript" src="../js/someScript4.js' + timeStamp + '"></scr' + 'ipt>'); 
    document.writeln('<scr' + 'ipt type="text/javascript" src="../js/someScript5.js' + timeStamp + '"></scr' + 'ipt>'); 

    function myFunction1(){ 
     console.log('break here 1'); 
    } 
    function myFunction2(){ 
     console.log('break here 2'); 
    } 
</script> 
</head> 

someScript.js

function myFunction3(){ 
     console.log('break here 2'); 
    } 

脚本事项的顺序。 是否有在脚本标记中有时间戳并仍然可以调试? 谢谢。

回答

0

如果没有定义的变量bDeveloperMode - 该行会抛出Uncaught ReferenceError

Uncaught ReferenceError: bDeveloperMode is not defined 

和JavaScript代码的其余部分将无法运行。

相反 - 你可以使用typeof和检查它是否是不确定的:

typeof bDeveloperMode === 'undefined' 

这里是修复你的代码:

<head> 
 
<script type="text/javascript"> 
 
    //if not developer mode add timestamp to prevent caching 
 
    var timeStamp = typeof bDeveloperMode === 'undefined' ? ('?_=' + new Date()).valueOf() : ''; 
 
    document.writeln('<scr' + 'ipt type="text/javascript" src="../js/someScript.js' + timeStamp + '"></scr' + 'ipt>'); 
 
    document.writeln('<scr' + 'ipt type="text/javascript" src="../js/someScript2.js' + timeStamp + '"></scr' + 'ipt>'); 
 
    document.writeln('<scr' + 'ipt type="text/javascript" src="../js/someScript3.js' + timeStamp + '"></scr' + 'ipt>'); 
 
    document.writeln('<scr' + 'ipt type="text/javascript" src="../js/someScript4.js' + timeStamp + '"></scr' + 'ipt>'); 
 
    document.writeln('<scr' + 'ipt type="text/javascript" src="../js/someScript5.js' + timeStamp + '"></scr' + 'ipt>'); 
 

 
    function myFunction1(){ 
 
     console.log('break here 1'); 
 
    } 
 
    function myFunction2(){ 
 
     console.log('break here 2'); 
 
    } 
 
</script> 
 
</head>

+0

bDeveloperMode是不是一个问题。它是其他地方定义的全局变量。问题是Chrome中的调试器不允许在JS脚本添加了document.writeln和timestamp的情况下添加断点。我的问题是有可能有不同的方式来导入用于开发与生产的JS脚本。 – kaplievabell

+0

我刚刚检查过,调试这个没有问题。你究竟如何调试它? – Dekel

相关问题