javascript仅在IE 11的调试模式下运行,其他浏览器都可以

时间:2015-08-05 09:23:09

标签: javascript internet-explorer debugging

我有以下代码(HTTPS AJAX),在IE 11中,这只在调试模式下运行良好。问题是在IE onclick事件中不会触发任何操作。但是如何调试呢?当我打开开发工具时,脚本运行得很好,console.log为空。我知道我有许多注释代码,但没有console()。我删除了这已经认为这是问题所在。 IE 11不接受它的原因是什么?

更新:我尝试了各种各样的东西,META标签,缓存控制等,但没有任何帮助。只有帮助添加Math.random()来控制缓存。

<meta http-equiv="X-UA-Compatible" content="IE=9"/>不起作用

req.setRequestHeader('Cache-Control', 'no-cache');不起作用

Math.random()有效

    <?php include "vars.php"; ?>


    <script type="text/javascript">

    function HandleGPIO(gpin,value) {
        document.getElementById(gpin).innerHTML="Working";
        document.getElementById(gpin).style.color="blue";
        var req = createHttpRequest();
        req.open("GET", "https://mysite.xy/gpio/gpioajax.php?gpio=" + gpin + "&value=" + value, false); //false ceka na vyrizeni
        req.setRequestHeader("Content-Type", "text/html; charset=windows-1250");
        req.send(null);
            if(req.responseText == 0){  
                QueryGPIO();    //Query for updated values
                return true;
                }
            else if(req.responseText == 1){
                QueryGPIO();    //Query for updated values
                return true;
                }
            else{
                window.alert('Spatny navratovy kod pro AJAX, chyba: ' + req.responseText);
                QueryGPIO();    //Query for updated values
                return false;
                }
    }

    function QueryGPIO() {
        //var arr_inputs = ['5','21','27'];
        var arr_inputs = <?php echo '["' . implode('", "', $pins_array_in) . '"]' ?>;
        var arr_outputs = <?php echo '["' . implode('", "', $pins_array_out) . '"]' ?>;

        //Query Inputs
        for (var i = 0; i < arr_inputs.length; i++) {
            (function(i) {
                //alert(arr_inputs[i]);
                var req = createHttpRequest();
                req.open("GET", "https://mysite.xy/gpio/gpioajaxquery.php?gpio=" + arr_inputs[i], false); //false ceka na vyrizeni
                req.setRequestHeader("Content-Type", "text/html; charset=windows-1250");
                req.send(null);
                //window.alert(req.responseText);
                if(req.responseText == '0'){
                    document.getElementById(arr_inputs[i]).innerHTML='ON';
                    document.getElementById(arr_inputs[i]).style.color='green';
                    //document.getElementById(arr_inputs[i]).addEventListener("click", function() { HandleGPIO(arr_inputs[i], 1); }, false);    
                    //document.getElementById(arr_inputs[i]).setAttribute('onclick','HandleGPIO('+arr_inputs[i]+',1)');
                    document.getElementById(arr_inputs[i]).onclick = function () { HandleGPIO(arr_inputs[i],1); };
                    }
                else if(req.responseText == '1'){
                    document.getElementById(arr_inputs[i]).innerHTML='OFF';
                    document.getElementById(arr_inputs[i]).style.color='red';
                    //document.getElementById(arr_inputs[i]).setAttribute('onclick','HandleGPIO('+arr_inputs[i]+',0)');
                    document.getElementById(arr_inputs[i]).onclick = function(debug) {
                    if(debug === true) {
                return [arr_inputs[i], 0];
              }
            else {
                HandleGPIO(arr_inputs[i],0);
              }
            }
                    //document.getElementById(arr_inputs[i]).onclick = function() { HandleGPIO(arr_inputs[i],0); };
                    var temp = document.getElementById(arr_inputs[i]).onclick;
                    }
                else{
                    window.alert('Spatny navratovy kod pro AJAX');
                    }
            })(i)
    }   
        //var arr_outputs = ['9','12'];

        //Query Outputs
        for (var i = 0; i < arr_outputs.length; i++) {
            (function(i) {      
                var req = createHttpRequest();
                req.open("GET", "https://mysite.xy/gpio/gpioajaxquery.php?gpio=" + arr_outputs[i] + "&r=" + Math.random(), false); //false ceka na vyrizeni
                req.setRequestHeader("Content-Type", "text/html; charset=windows-1250");
                req.send(null);
                //window.alert(req.responseText);
                if(req.responseText == '1'){
                    document.getElementById(arr_outputs[i]).innerHTML='ON';
                    document.getElementById(arr_outputs[i]).style.color='green';
                    //document.getElementById(arr_outputs[i]).setAttribute('onclick','HandleGPIO('+arr_outputs[i]+',0)');
                    //document.getElementById(arr_outputs[i]).addEventListener("click", function() { HandleGPIO(arr_outputs[i], 0); },true);
                    document.getElementById(arr_outputs[i]).onclick = function() { HandleGPIO(arr_outputs[i],0); };
                    }
                else if(req.responseText == '0'){
                    document.getElementById(arr_outputs[i]).innerHTML='OFF';
                    document.getElementById(arr_outputs[i]).style.color='red';
                    //document.getElementById(arr_outputs[i]).setAttribute('onclick','HandleGPIO('+arr_outputs[i]+',1)');
                    //document.getElementById(arr_outputs[i]).addEventListener("click", function() { HandleGPIO(arr_outputs[i], 1); },true);
                    document.getElementById(arr_outputs[i]).onclick = function() { HandleGPIO(arr_outputs[i],1); };
                    }
                else{
                    window.alert('Spatny navratovy kod pro AJAX');
                    } 
            })(i)   
        } 
    }


    function createHttpRequest() {
      if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari
        http_request = new XMLHttpRequest();
        } 
      else if (window.ActiveXObject) {
        http_request = new ActiveXObject("Microsoft.XMLHTTP");
        }
        return http_request;
    }
    </script>

<a id="27" style="cursor: pointer; color:red;">OFF</a>
<a id="27" style="cursor: pointer; color:red;">ON</a>

<a id="21" style="cursor: pointer; color:red;">OFF</a>
<a id="21" style="cursor: pointer; color:red;">ON</a>

<a id="5" style="cursor: pointer; color:red;">OFF</a>
<a id="5" style="cursor: pointer; color:red;">ON</a>

<a id="9" style="cursor: pointer; color:red;">OFF</a>
<a id="9" style="cursor: pointer; color:red;">ON</a>

2 个答案:

答案 0 :(得分:1)

UPDATE2:经过数天的搜索后,问题就解决了。解决方案:req.setRequestHeader( "Pragma", "no-cache" );在我的情况下禁用缓存并正常工作。我的假设是,脚本仅在调试模式下工作,因为启用了缓存并且在控制台模式下缓存被强制抑制。但是,默认情况下,HTTPS缓存应始终禁用,但显然存在问题。

答案 1 :(得分:0)

我有一个建议的解决方案

1:如果版本有效,请将运行模式设置为浏览器版本。

<meta http-equiv="X-UA-Compatible" content="IE=9"/>