Страницы: 1
Привет All
Нашел кучу примеров 2 , но везде это тупо простыня с выводом м консоль. Зачем это в консоли, это нужно в переменной или в массиве!? И чтоб отдельной ф-цией в которую можно засылать УРЛ и получить title, вот это и не могу осилить.
Дело там, ЕЯПП в том, что запрос асинхронный и пока оно выполняется, функция отрабатывает и возвращает пустоту.
function getTitleFromURL(url) { let xhr = new XMLHttpRequest(), titl="пустышка"; xhr.onload = reqListener; xhr.open('GET', url, true); // HTTP request method, such as "GET", "POST", "PUT", "DELETE", etc. Ignored for non-HTTP(S) URLs. xhr.responseType = 'document'; // если не указывать или выше сделать false , то в синхронном запросе получается регуляркой распарсить текст и вроде норм. Но асинхронный лучше вроде.. xhr.onerror = function() { alert( 'Ошибка ' + this.status ); } xhr.send(); function reqListener () { titl = (this.responseXML.title) ? this.responseXML.title : "неполучилось"; console.log(titl); //alert(tit); здесь пишет в консоль и алертит что надобно. }; alert(titl); // а здесь уже\ещё ничего нет и старое значение "пустышка" };
Подмогните сделать типа как здесь, чтоб ф-ция возвращала нужное. Вот как здесь сделал, для выброса из текста всякой гадости:
// выбросить из текста спецсимволы................. function getCurTitle(text) { let title, titleRe, badSymbols = new RegExp(/[\!\@\#\(&#\d+;)\$\%\^\&\*\(\)_\+\-\=\<\>\/\\\|\:\.\,\;\`\'\"\?]+/ig); title = (text) ? text : Math.random().toString().slice(2,14); titleRe = title.replace(badSymbols, ""); return titleRe.trim().slice(0,65); };
Добавлено 09-05-2020 18:43:14
Оставлю здесь и рабочий синхронный вариант с регуляркой:
// ===================== Получить title из URL ============================================= function getTitleFromURL(url) { let xhr = new XMLHttpRequest(), respText, titl, t; xhr.open('GET', url, false); // true - ассинхроный и не работает xhr.onload = function() { respText = this.responseText; titl = respText.match(/<title>(.*?)<\/title>/); //t = titl[1]; } xhr.onerror = function() { alert( 'Ошибка ' + this.status ); } xhr.send(); // return t.trim(); return titl[1].trim(); };
Отредактировано mokujin (09-05-2020 18:43:14)
...программисты словно войну какую-то ведут за свои обновления. Блин, почему сейчас повсюду мания ухудшать интерфейсы и делать их максимально неудобными?! Radiation
Отсутствует
Страницы: 1