Как подсчитать количество символов на веб-странице? - PullRequest
0 голосов
/ 11 мая 2018

Я пытаюсь создать веб-страницу, которая открывает другую веб-страницу, когда вы нажимаете кнопку «Попробовать», а затем подсчитывает количество символов на этой веб-странице.Прямо сейчас эта веб-страница успешно открывает веб-страницу, которую я прошу открыть, но длина веб-страницы в символах "не определена".Я не хочу избавляться от XMLHttpRequest или строки кода под ним, потому что я планирую расширить эту веб-страницу, чтобы позже она могла анализировать веб-страницу по определенным конкретным ключевым словам.Вот код:

<!DOCTYPE html>
<html>
<body>

<p>Click the button to open a new browser window.</p>

<button onclick="myFunction()">Try it</button>

<script>
function myFunction() {
    window.open("https://www.gutenberg.org/files/1065/1065-h/1065-h.htm");
    var req = new XMLHttpRequest();
    req.open('GET', 'https://www.gutenberg.org/files/1065/1065-h/1065-h.htm', false);
    alert(req.length);
}
</script>

</body>
</html>

Буду очень признателен за любую помощь, которую сможет оказать мне любой.Хорошего дня.

1 Ответ

0 голосов
/ 11 мая 2018

Прежде всего вам нужен заголовок флага на удаленном сервере, который позволяет вашему URL делать XMLHttpRequests. Контроль доступа-Разрешить-Происхождение: * или Контроль доступа-Разрешить-Происхождение: yoururl.com

Другая проблема состоит в том, что версия https имеет перенаправление на версию http, тогда у вас могут возникнуть проблемы, если вы выполняете это с сайта https, из-за поведения «смешанного содержимого» браузеров клиента. Также синхронный XMLHttpRequest (ложный флаг) устарел или скоро будет устаревшим https://xhr.spec.whatwg.org/.

Если вы выполняете это в том же домене (http gutenberg), это работает. Вы должны попытаться выполнить это на своем http-сервере и посмотреть консоль, ожидая, что у вас не будет ограничения Access-Control-Allow-Origin.

var req = new XMLHttpRequest();
req.open('GET', 'http://www.gutenberg.org/files/1065/1065-h/1065-h.htm', true);
req.onreadystatechange = function (aEvt) {
  if (req.readyState == 4) {
     if(req.status == 200)
      console.log(req.responseText);
     else
      console.log("Error loading page\n");
  }
};
req.send(null)
...