代码之家  ›  专栏  ›  技术社区  ›  Cooper

在userCodeAppPanel中看不到我的javascript代码

  •  1
  • Cooper  · 技术社区  · 6 年前

    这是来自Google电子表格中包含的脚本的代码。唯一的其他代码是一个onOpen,它创建和菜单以及一个showDialog()函数

    function showDialog(){
      userInterface=HtmlService.createHtmlOutputFromFile('test');
      SpreadsheetApp.getUi().showModelessDialog(userInterface, 'Testing Inputs');
    }
    

    这是我的javascript

    <script>
        var idA=['pdCliT','pdLocT','pdTypS','pdNamT','pdSupT','pdOutS','pdGasT','pdFloS','pdAmiS','pdUopN','pdVolN','pdDru','pdLOMN'];
        $(function(){});
        function testInputs(){
          console.log('idA.join(\',\')= %s',idA.join(', '));
          for(var i=0;i<idA.length;i++){
            var id='#' + idA[i];
            var type=String(idA[i]).slice(-1);
            console.log('idA[%d]=%s , id= %s',i,idA[i],id);  
            switch(type){
              case 'N':
                var min=$(id).attr(min);
                var max=$(id).attr(max);
                var val=$(id).val();
                console.log('type: number, min: %s, max: %s, val: %s',min,max,val);
                break;
              case 'T':  
                var val=$(id).val();
                console.log('type: text, value: %s',val);
                break;
              case 'S':
                console.log('value: %s',$(id).val());
                break;
              default:
                var val=$(id).val();
                console.log('value: %s', val);
            }
          }  
        }
        console.log('test code');
        </script>
    

    这就是我在控制台中单击与“测试代码”相关联的链接时看到的情况。

    <!doctype html>
    <style nonce="zBEN3oEdQQRu7CJxQEbQJdjrskg">
        html, body, iframe {
            border: 0;
            display: block;
            height: 100%;
            margin: 0;
            padding: 0;
            width: 100%;
        }
    
        iframe#userHtmlFrame {
            overflow-y: scroll;
            -webkit-overflow-scrolling: touch;
        }
    </style>
    <meta name="chromevox" content-script="no">
    <script type="text/javascript" src="/static/macros/client/js/769718587-mae_html_user_bin_i18n_mae_html_user.js" nonce="zBEN3oEdQQRu7CJxQEbQJdjrskg"></script>
    <script nonce="zBEN3oEdQQRu7CJxQEbQJdjrskg">
        maeInit_(true);
    </script>
    <iframe id="userHtmlFrame" allow="accelerometer *; ambient-light-sensor *; autoplay *; camera *; encrypted-media *; fullscreen *; geolocation *; gyroscope *; magnetometer *; microphone *; midi *; payment *; picture-in-picture *; speaker *; usb *; vibrate *; vr *" src="/blank"></iframe>
    <form id="example_form"></form>
    

    这是整个html文件。

    <!DOCTYPE html>
    <html>
      <head>
        <base target="_top">
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
        <script>
        var idA=['pdCliT','pdLocT','pdTypS','pdNamT','pdSupT','pdOutS','pdGasT','pdFloS','pdAmiS','pdUopN','pdVolN','pdDru','pdLOMN'];
        $(function(){});
        function testInputs(){
          console.log('idA.join(\',\')= %s',idA.join(', '));
          for(var i=0;i<idA.length;i++){
            var id='#' + idA[i];
            var type=String(idA[i]).slice(-1);
            console.log('idA[%d]=%s , id= %s',i,idA[i],id);  
            switch(type){
              case 'N':
                var min=$(id).attr(min);
                var max=$(id).attr(max);
                var val=$(id).val();
                console.log('type: number, min: %s, max: %s, val: %s',min,max,val);
                break;
              case 'T':  
                var val=$(id).val();
                console.log('type: text, value: %s',val);
                break;
              case 'S':
                console.log('value: %s',$(id).val());
                break;
              default:
                var val=$(id).val();
                console.log('value: %s', val);
            }
          }  
        }
        console.log('test code');
        </script>
        <style>
        div#menu input[type=button]{margin:0 5px 5px 0;}
        div#content input, select{margin: 5px 2px;}
        #content{width:400px;}
        </style>
      </head>
      <body>
      <div id="menu"></div>
      <div id="content">
        <h1 id="hdg1">Basic Project Data Input</h1>
        <input type="text" id="pdCliT" value="Client Name" placeholder="Client" size="20" /><label for="pdCliT">Client</label><br />
        <input type="text" id="pdLocT" value="Client Location" placeholder="Unit Type" size="20" /><label for="pdLocT">Location</label><br />
        <select id="pdTypS" class="control"><option value="Select Unit Type" selected>Select Unit Type</option></select><label for="pdTypS">Unit Type</label><br />
        <input type="text" id="pdNamT" value="Value 1" placeholder="Unit Name" size="20" /><label for="pdNamT">Unit Name</label><br />
        <input type="text" id="pdSupT" value="Value 2" placeholder="Catalyst Supplier" size="20" /><label for="pdSupT">Catalyst Supplier</label><br />
        <select id="pdOutS" class="control"><option value="Select Catalyst Outcome" selected>Select Catalyst Outcome</option></select><label for="pdOutS">Catalyst Outcome</label><br />
        <input type="text" id="pdGasT" value="Value 3" placeholder="Carrier Gas" size="20" /><label for="pdGasT">Carrier Gas</label><br />
        <select id="pdFloS" class="control"><option value="Select Gas Flow" selected>Select Gas Flow</option></select><label for="pdFloS">Gas Flow</label><br />
        <select id="pdAmiS" class="control"><option value="Select Amine Scrubbing" selected>Select Amine Scrubbing</option></select><label for="pdAmiS">Amine Scrubbing</label><br />
        <input type="number" id="pdUopN" value="5000" placeholder="Operating Pressure psig" size="20" min="0" max="10000" step="100" title="Not greater than 10000" /><label for="pdUopN">Unit Operating Pressure, psig</label><br />
        <input type="number" id="pdVolN"  value="1000" placeholder="Reactor Value ft3" size="20" min="0" max="200000" step="1000" title="Not greater than 200000" /><label for="pdVolN">Reactor Volume,ft3</label><br />
        <input type="number" id="pdDruN" value="200" placeholder="Drum of QTRX2" size="20" min="0" max="500" step="100" title="Not greater than 500"/><label for="pdDruN">Drums of QTRX2</label><br />
        <input type="text" id="pdLOMT" value="Value 4" placeholder="Lead OM" size="20" /><label for="pdLOMT">Lead OM</label><br />
        <input type="button" id="tstInputs" value="Test Inputs" onClick="testInputs();" />
      </div>
      </body>
    </html>
    

    这是我启动对话框时控制台显示的内容

    Unrecognized feature: 'picture-in-picture'.
    iframedAppPanel?mid=ACjPJvGGulDc8kqHqaTVmW8ouofBnAMf3yo988NOBs-h9XUGoRpmfzwLx1oicxsS_tKSejiCuGZgzG7Uk-hD97zxYEj_J7Qna3k88V4wF0VJZqY0qcngq85y83fmy-indV7uqhh-nwbcfmY:11 Unrecognized feature: 'vibrate'.
    userCodeAppPanel:2 Unrecognized feature: 'picture-in-picture'.
    userCodeAppPanel:2 Unrecognized feature: 'vibrate'.
    userCodeAppPanel:30 test code
    2877393808-warden_bin_i18n_warden.js:202 To {message: "There was an error during the transport or process…this request. Error code = 10, Path = /wardeninit", name: "TransportError", stack: "TransportError: There was an error during the tran…/js/2877393808-warden_bin_i18n_warden.js:186:252)"}
    

    这是我从另一个项目中提取的一个简单文件。我在一个无模式的对话框中运行它,但是我在web应用程序中遇到了同样的问题,我一直在使用控制台进行调试。

    我很感激这里的任何想法。我试着转到“设置”并单击“恢复默认值并重新加载”。我最近一直在使用控制台进行调试,因为我似乎无法解决这个问题。

    我想知道这是否与图片和振动警告有关。我用不同的方式搜索它们,但找不到任何帮助我的东西。

    回答你的问题, “当使用本机Javascript而不是jQuery时,您可以复制吗?” 很抱歉花了这么长时间。

    下面是HTML(稍微简化了一点):

    <html>
      <head>
        <base target="_top">
      </head>
      <script>
      window.onload=function(){
      console.log('onload has run');
      google.script.run
      .withSuccessHandler(displayDates)
      .getDates();
      }
      function displayDates(datObj){
        var s='';
        gdateObj=datObj;
        for(var i=0;i<datObj.idA.length;i++){
          s+=datObj[datObj.idA[i]+'-html'];
        }
        s+='<br /><input type="button" value="Save Dates" onClick="saveChanges();" />';
        s+='<input type="button" value="Get Dates" onClick="getDates();" />';
        s+='<input type="button" value="Exit" onClick="google.script.host.close();" />';
        document.getElementById('dates').innerHTML=s;
        for(var i=0;i<datObj.idA.length;i++){
          document.getElementById(datObj.idA[i]).setAttribute("value",formatDateTime(new Date(datObj[datObj.idA[i]])));
        }
      }
      function formatDateTime(dt){
        if(dt && Object.prototype.toString.call(dt) === '[object Date]'){
          var M=dt.getMonth()+1;
          var d=dt.getDate();
          var h=dt.getHours();
          var m=dt.getMinutes();
          var s=dt.getSeconds();
          var MM=(M<10)?String('0'+M):String(M);
          var dd=(d<10)?String('0'+d):String(d);
          var hh=(h<10)?String('0'+ h):String(h);
          var mm=(m<10)?String('0'+m):String(m);
          var ss=(s<10)?String('0'+s):String(s);
          var ds=dt.getFullYear() + '-' + MM + '-' + dd + 'T' + hh + ':' + mm;
          return ds;
        }else{
          throw("Error: Parameter dt is not a valid date");
        }
      }
      </script>
      <body>
        <div id="dates"></div>
      </body>
    </html>
    

    我的控制台日志:

    Unrecognized feature: 'vibrate'.
    userCodeAppPanel:2 Unrecognized feature: 'vibrate'.
    userCodeAppPanel:3 onload has run
    1995166154-warden_bin_i18n_warden.js:56 Net state changed from IDLE to BUSY
    1995166154-warden_bin_i18n_warden.js:194 Co {message: "There was an error during the transport or process…this request. Error code = 10, Path = /wardeninit", name: "TransportError", stack: "TransportError: There was an error during the tran…/js/1995166154-warden_bin_i18n_warden.js:178:252)"}message: "There was an error during the transport or processing of this request. Error code = 10, Path = /wardeninit"name: "TransportError"stack: "TransportError: There was an error during the transport or processing of this request. Error code = 10, Path = /wardeninit↵    at new Co (https://docs.google.com/static/macros/client/js/1995166154-warden_bin_i18n_warden.js:178:339)↵    at Ho.q.Cd (https://docs.google.com/static/macros/client/js/1995166154-warden_bin_i18n_warden.js:186:350)↵    at Ai (https://docs.google.com/static/macros/client/js/1995166154-warden_bin_i18n_warden.js:76:228)↵    at zi (https://docs.google.com/static/macros/client/js/1995166154-warden_bin_i18n_warden.js:73:491)↵    at ui.m (https://docs.google.com/static/macros/client/js/1995166154-warden_bin_i18n_warden.js:73:438)↵    at Ai (https://docs.google.com/static/macros/client/js/1995166154-warden_bin_i18n_warden.js:76:228)↵    at zi (https://docs.google.com/static/macros/client/js/1995166154-warden_bin_i18n_warden.js:73:491)↵    at Ho.<anonymous> (https://docs.google.com/static/macros/client/js/1995166154-warden_bin_i18n_warden.js:185:159)↵    at on (https://docs.google.com/static/macros/client/js/1995166154-warden_bin_i18n_warden.js:143:304)↵    at po (https://docs.google.com/static/macros/client/js/1995166154-warden_bin_i18n_warden.js:178:252)"__proto__: C
    1995166154-warden_bin_i18n_warden.js:56 Net state changed from BUSY to IDLE
    

    以下是屏幕上显示的所有数据来自电子表格:

    enter image description here

    下面是当我跟踪到javascript的链接时,源面板的样子。

    <!doctype html><style nonce="TqICcsqvIDjfixWz6NYEPlNwdL0">html, body, iframe {border: 0; display: block; height: 100%; margin: 0; padding: 0; width: 100%;}iframe#userHtmlFrame {overflow-y: scroll; -webkit-overflow-scrolling: touch;}</style><meta name="chromevox" content-script="no"><script type="text/javascript" src="/static/macros/client/js/2261581559-mae_html_user_bin_i18n_mae_html_user.js" nonce="TqICcsqvIDjfixWz6NYEPlNwdL0"></script>
    <script nonce="TqICcsqvIDjfixWz6NYEPlNwdL0">maeInit_( true );</script><iframe id="userHtmlFrame" allow="accelerometer *; ambient-light-sensor *; autoplay *; camera *; encrypted-media *; fullscreen *; geolocation *; gyroscope *; magnetometer *; microphone *; midi *; payment *; picture-in-picture *; speaker *; usb *; vibrate *; vr *" src="/blank"></iframe><form id="example_form"></form>
    
    0 回复  |  直到 6 年前