Полезная информация

Будьте в курсе последних изменений в мире Mozilla, следя за нашим микроблогом в Twitter.

№109-05-2020 18:26:48

mokujin
Участник
 
Группа: Members
Зарегистрирован: 17-02-2017
Сообщений: 446
UA: unknown 0.0

Получить title из URl ?

Привет 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

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]