Перенаправление формы на новых сайтах Google - PullRequest
1 голос
/ 20 января 2020

Я создал форму, используя скрипт приложения. В файле html у меня есть следующее:

<form name="Subscribe-to-Central" id="Subscribe-to-Central" action="https://script.google.com/macros/s/key/exec" method="POST" onsubmit="myFunction()">  

Inputs ..

</form>

<script>
function myFunction() {
  alert("Successfully subscribed. Please press okay to return to the home page");
  window.open("URL", "_top");
}
</script>

Форма работает хорошо, когда отправка даты на вложенный лист, а также перенаправление на «URL» после отправки, но проблема в том, когда я попытался встроить форму в новые сайты Google, он по-прежнему отправляет данные на лист, но больше не перенаправляет и выдает следующую ошибку "script.googleusercontent.com отказался подключиться."

PS: Обратите внимание что я сталкиваюсь с этой проблемой только с новыми сайтами гугл. Я попытался встроить тот же сценарий в классовые c сайты Google, и он работал просто отлично

Любая помощь будет так высоко ценится

Screenshot of the error enter image description here

1 Ответ

1 голос
/ 21 января 2020

Ответ:

К сожалению, из-за изменений в работе новых сайтов по сравнению с сайтами Classi c, больше невозможно выполнить перенаправление на новом сайте.

Дополнительная информация:

Как вы можете видеть в консоли, вы получаете следующую ошибку при попытке перейти в окно верхнего уровня из JavaScript:

Небезопасная JavaScript попытка инициировать навигацию для фрейма с источником https://sites.google.com из фрейма с URL https://<id>.script.googleusercontent.com/userCodeAppPanel. Фрейм, пытающийся перемещаться по окну верхнего уровня, помещается в «песочницу», но флаг allow-top-navigation или allow-top-navigation-by-user-activation не установлен.

и:

Отказано в отображать <URL> в кадре, поскольку для X-Frame-Options установлено значение sameorigin.

Можно установить X-Frame-Options для встроенной страницы скрипта Google Apps, используя метод .setXFrameOptionsMode() HtmlService и использование перечислителя XFrameOptionsMode, как показано здесь:

function doGet(e) {
  return HtmlService.createHtmlOutputFromFile('index')
                    .setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL);
}

К сожалению, песочнице необходим флаг allow-top-navegation или allow-top-navegation-by-user, чтобы иметь возможность перенаправить из песочницы. Согласно документации, единственными режимами песочницы, доступными из HtmlService, являются следующие Enmerators:

  • IFRAME: режим песочницы, в котором используется песочница iframe вместо технологии песочницы Caja, используемой режимы EMULATED и NATIVE. Этот режим используется по умолчанию для новых сценариев с 12 ноября 2015 года и для всех сценариев с 6 июля 2016 года.

  • NATIVE: режим песочницы, построенный поверх ECMAScript 5 строгий режим. Режим песочницы построен на основе строгого режима ECMAScript 5. По состоянию на 6 июля 2016 г. этот режим был закатом. Все сценарии теперь используют режим IFRAME.

  • EMULATED: устаревший режим песочницы, который имитирует строгий режим ECMAScript 5, используя только функции, доступные в ECMAScript 3. Этот режим по умолчанию использовался до февраля 2014 года. Фактически устарел. Все сценарии, пытающиеся использовать EMULATED, теперь будут использовать IFRAME вместо этого.

Установка флагов для изолированной среды Встраивание невозможно выполнить из интерфейса «Новые сайты», поэтому добавить требуемый флаг разрешения навигации также невозможно с конца «Сайты».

Что вы можете сделать:

Там здесь нет ничего, что можно сделать, пока вы работаете с новыми сайтами. Однако, как вы уже указали, сайты Classi c разрешают это, если это подходящий обходной путь.

Я знаю, что, как правило, это плохие новости, но я надеюсь, что это полезно для вас!

Ссылки:

...