Google App Maker — как открывать гиперссылки по нажатию кнопки

У меня возникла проблема, когда при нажатии на кнопку мне нужно открыть гиперссылку. Как я могу этого добиться?


person Tiktak132    schedule 19.06.2017    source источник


Ответы (4)


Попробуйте использовать виджет Link:

https://developers.google.com/appmaker/scripting/api/widgets#Link

Вы также можете установить цель _blank, если хотите, чтобы ваша ссылка открывалась в новой вкладке.

person Pavel Shkleinik    schedule 19.06.2017

Вы можете использовать

window.open('www.your_link.com','_blank');

в событии кнопки onClick

person Andrey Koltsov    schedule 20.06.2017
comment
Спасибо! Я понял это. - person Tiktak132; 21.06.2017

Для будущих читателей, которые плохо знакомы с App Maker, быстрый ответ:

          // ex: with the Link widget
          var link_widget = app.pages.PageName.descendants.LinkWidget;

          // use some function that gets your href
          var valid_link = getMyHref();

          // set the href
          link_widget.href = valid_link;
person Community    schedule 14.08.2017

Я нашел решение для этого. Ключевым моментом является использование виджета HTML в Google App Maker. Затем вы анализируете строку, можете преобразовать ее в html и загрузить в поле. Для этого необходимо учитывать следующее:

  • Новые строки должны быть преобразованы в
  • Создайте функцию replaceAll - (заменяет все экземпляры, найденные в строке)
  • Что считать ссылкой, для этого используйте список link_types

//Converts string to html with clickable links
function linkify(text){
  //splits by </br> and a space
  words = replaceAll('</br>',' ',text).split(' ');
  link_types = ['https://','http://','www.','.com','.co.uk'];
  links = [];
  //Scan all the words looking for a URL
  words.forEach(function(word){
    //console.log(word);
    var link_found = false;
    //Check if it contains any of the URL identifiers
    link_types.forEach(function(link_type){
      if(links.indexOf(word)===-1){
      if(!link_found){
        if(word.indexOf(link_type)!== -1){
          link_found = true;
          //appends to list of existing links to avoid creating multiple hyperlinks of the same URL
          links.push(word);
          href ='';
          //if the link doesn't contain http then it formats the URL to include it
          if(word.indexOf('http')===-1){
            href+='http://';
          }
          href+=word;
          //Replaces all occurences of the link to a html format
          text = replaceAll(word,'<a href="'+href+'" target="_blank">'+word+'</a>',text);
        }
      }
      }
    });
  });
  return text;
}

linkify('Загрузки случайного текста https://google.com больше случайного текста....')

вывод: «Загрузки случайного текста https://google.com еще случайный текст....'

РЕДАКТИРОВАТЬ:

Определите функцию replaceAll, как показано ниже.

function replaceAll (search, replacement,text) {
    var target = text;
    return target.replace(new RegExp(search, 'g'), replacement);
};
person Samuel Lopez    schedule 13.09.2018
comment
Привет, это похоже на то, что я ищу, хотя я не знаю, что вы подразумеваете под созданием функции replaceAll. Не могли бы вы объяснить, чтобы я мог это исправить? Я работал над этим несколько недель :/ - person Kat; 17.11.2018
comment
Спасибо. Таким образом, результат, который я получаю, добавляя это в поле комментария, заключается в том, что он возвращает следующее: ‹a href=google.com target=_blank›google.com‹/a› в поле для комментариев. Мне действительно нужно, чтобы это была гиперссылка. Причина, по которой я помещаю ее в поле для комментариев, заключается в том, что при создании объекта это нужно только в том случае, если это объект определенного типа. - person Kat; 18.11.2018