Как открыть URL-ссылку из JavaScript внутри гаджета Google Site Script HTML Google Apps

Я написал HTML-гаджет (не пользовательский интерфейс) на языке Google Apps Script для встраивания в сайт Google. Гаджет представляет раскрывающийся список с параметрами, содержащими пары URL/отображаемое имя/текст.

Я хочу поместить в гаджет кнопку, которая открывает новое окно, соответствующее выбранному URL-адресу. Но, в основном, я получаю сообщение об ошибке "Объект не содержит метод "открытия"" при выполнении

window.open(url);

Это можно обойти? Я могу (и создал) гаджеты с тегами привязки, которые успешно открывают другие окна, но выполнение того же действия из javascript, по-видимому, не разрешено.

Все, что выполняет функциональность, прекрасно. Решение на основе jQuery было бы здорово.

Спасибо.


person Louis Kleiman    schedule 12.02.2014    source источник


Ответы (4)


Из-за санитарной обработки Caja не поддерживаются все функции javascript, поэтому невозможно открыть новое окно в App Script.

Обходной путь для отображения всплывающего окна в App Script заключается в использовании оверлейного окна (которое технически не является всплывающим окном, но выглядит как всплывающее окно), например модальное диалоговое окно jQuery, которое поддерживается в App Script.

http://jqueryui.com/dialog/#modal-form

Однако теги iframe не поддерживаются в App Script, поэтому попытка открыть URL-адрес в модальном окне с помощью тегов iframe не сработает.

Вы можете узнать больше об этих ограничениях в App Script по ссылке ниже:

https://developers.google.com/apps-script/guides/html/restrictions**

Надеюсь, поможет!

person Raghvendra Kumar    schedule 22.11.2014

Вы можете открыть ссылку напрямую, запустив JS window.open() в диалоговом окне с помощью HTMLService.

Это демонстрационный лист (скопируйте его на смотрите сценарий).

openNewWindow() назначается кнопке.

Код.gs:

function openNewWindow() {

  var htmlString = 
    '<div>' + 
      '<input type="button" value="Close" onclick="google.script.host.close()" />' + 
    '</div>' +
    '<script>window.open("http://www.google.com")</script>';

  var htmlOutput = HtmlService
    .createHtmlOutput(htmlString)
    .setSandboxMode(HtmlService.SandboxMode.IFRAME)
    .setHeight(60);

  SpreadsheetApp
    .getUi()
    .showModalDialog(htmlOutput, 'Opening New Window...');  
}
person Andrew Roberts    schedule 11.03.2015

Это невозможно сделать из-за дезинфекции caja. Варианты ниже не будут работать.

1) jquery - $("#some_link_id").click() 2) javascript - window.open, window.href и т.д...

Единственный обходной путь, но я думаю, что он не подходит для вашей проблемы, - это создание ссылок с target="_blank" для открытия новых окон, но, как я уже сказал, невозможно щелкнуть по этим ссылкам через javascript/jquery.

<a href="http://www.google.com" id="my_link" class="abc" target="_blank">My Link</a>
person br araujo    schedule 13.02.2014

Я смог добиться этого, используя форму. При отправке установите действие формы на желаемый URL-адрес, как это определено выбранным элементом в поле выбора.

    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    <script>
    $('document').ready(function(){
       $('#yourForm').attr('onsubmit',null); //set onsubmit to Null for NATIVE Caja sandboxmode

       $('#yourForm').submit(function(){
          var val = $('#yourSelect').val();  //get value of select box
          $('#yourForm').attr('action',val); //set action of form
       });
    });
    </script>
    <div>
    <select id="yourSelect">
       <option value="https://www.google.com">Google</option>
       <option value="https://www.bing.com">Bing</option>
    </select>

    <form id="yourForm" method="get" target="_blank" action="">
    <input type="submit" value="Open Selected">
    </form>

    </div>
person Cameron Roberts    schedule 25.11.2014