focus () не работает в этом getUi (). showSidebar html in Chrome - PullRequest
0 голосов
/ 17 февраля 2020

Я открываю боковую панель, содержащую форму в Google Sheets, используя пользовательскую функцию Menubar.

Я хочу, чтобы <textarea> фокусировался при каждом открытии боковой панели (чтобы курсор находился внутри нее, и любой ввод добавляет к этому сразу). Но использование focus() не работает. (Применение стиля к нему работает , как показано на следующей строке.)

Как я могу выполнить sh, пожалуйста? Большое спасибо за вашу помощь.

ПРИМЕЧАНИЕ: Он не работает в Chrome (Win 10), но работает в Firefox.

function abc() {
    var html = 
    '<form id="form">' + 
    '<textarea id="title"> </textarea> '+ 
    '</form> <button>Submit</button> '+
    '<script>'+
    ' document.getElementById("title").focus(); '+ // << NOT WORKING 
    ' document.getElementById("title").style.outline ="solid 2px red"' +  // << WORKING
    ' </script>'+
    '';

  var a = HtmlService.createHtmlOutput(html)
  .setSandboxMode(HtmlService.SandboxMode.IFRAME)
  .setTitle('MY-FORM')
  SpreadsheetApp.getUi().showSidebar(a); 
}

function onOpen() {
  var ui = SpreadsheetApp.getUi();
  ui.createMenu('My Functions')
  .addItem('Start', 'abc')
  .addSeparator()
  .addToUi();
}



Ответы [ 2 ]

1 голос
/ 18 февраля 2020

Вам нужно дождаться загрузки страницы.

Попробуйте:

function abc() {
  var html ='<form id="form"><textarea id="title"></textarea></form><br /><input type="button" value="Submit" />'
  html+='<script>window.onload=function(){document.getElementById("title").focus();document.getElementById("title").style.outline="solid 2px red";}</script>';
  var ui=HtmlService.createHtmlOutput(html);
  SpreadsheetApp.getUi().showSidebar(ui); 
}

Анимация:

enter image description here

0 голосов
/ 18 февраля 2020

Попробуйте добавить логический атрибут автофокус :

'<textarea id="title" autofocus> </textarea> '
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...