У меня возникла проблема, когда при нажатии на кнопку мне нужно открыть гиперссылку. Как я могу этого добиться?
Google App Maker — как открывать гиперссылки по нажатию кнопки
Ответы (4)
Попробуйте использовать виджет Link:
https://developers.google.com/appmaker/scripting/api/widgets#Link
Вы также можете установить цель _blank, если хотите, чтобы ваша ссылка открывалась в новой вкладке.
Вы можете использовать
window.open('www.your_link.com','_blank');
в событии кнопки onClick
Для будущих читателей, которые плохо знакомы с 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;
Я нашел решение для этого. Ключевым моментом является использование виджета 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);
};