Прокрутка Marquee с несколькими входами текстового файла - PullRequest
0 голосов
/ 11 марта 2020

Я пытался создать прокрутку с помощью JavaScript, чтобы добавить в поток игры, который выделяет самых последних подписчиков, подписчиков и т. Д. c. Я использую StreamLabels, который захватывает теги игрока самых последних и помещает данные в текстовый файл, помеченный для каждого. Чтобы начать строить это, мне нужно было сначала убедиться, что у меня есть скрипт, который может извлекать текст и печатать данные файла на веб-странице. Однако каждый найденный мной код Javascript не выведет данные на экран.

Сначала я попытался ( Как прочитать локальный текстовый файл? ):

function readTextFile(file)
{
    var rawFile = new XMLHttpRequest();
    rawFile.open("GET", file, false);
    rawFile.onreadystatechange = function ()
    {
        if(rawFile.readyState === 4)
        {
            if(rawFile.status === 200 || rawFile.status == 0)
            {
                var allText = rawFile.responseText;
                alert(allText);
            }
        }
    }
    rawFile.send(null);
}

и добавили readTextFile("follower.txt"); к коду веб-страницы. После выполнения страница была полностью пустой для Chrome, IE и Edge.

Далее я попробовал ( Как загрузить содержимое текстового файла в переменную javascript? ):

var client = new XMLHttpRequest();
client.open('GET', '/follower.txt');
client.onreadystatechange = function() {
  alert(client.responseText);
}
client.send();

, а также обновленный 2019 код, найденный в комментариях:

fetch('follower.txt')
  .then(response => response.text())
  .then((data) => {
    console.log(data)
  })

Каждый закончился так же, как и первый: с пустым экраном.

Наконец, я отказался от чтения из текста с помощью Javascript и начал глядя на <marquee>, который, насколько я знаю, является устаревшим и архаичным c способом сделать это. Код , который я нашел , включал немного Javascript для прокрутки и HTML / CSS для управления текстом. Я также включил <object> тянуть текстовый файл в код. Я закончил с:

<!DOCTYPE html>
<html>
<head>
<title>TITLE</title>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jQuery.Marquee/1.5.0/jquery.marquee.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-easing/1.4.1/jquery.easing.min.js"></script>
<script>
  $(function(){
    $('.marquee').marquee({
      allowCss3Support: true,
      css3easing: 'linear',
      easing: 'linear',
      delayBeforeStart: 1000,
      direction: 'left',
      duplicated: true,
      duration: 25000,
      gap: 20,
      pauseOnCycle: false,
      pauseOnHover: false,
      startVisible: false
    });
  });
</script>
<style type="text/css"> 
  .marquee span { 
    margin-right: 100%;
    height: 30px;
    } 
  .marquee p { 
    white-space:nowrap;
    margin-right: 1000px; 
    } 
</style>
</head>

<body>
<div class="marquee" height=20px>
<p>Recent follower: <object type="text/html" data="follower.txt"></object> // Recent donation: <object type="text/html" data="follower.txt"></object><p>
</div>
</body>
</html>

Теперь этот код работает, однако <object> делает некоторые странные вещи с интервалом и случайно не виден, пока второй объект не появится на экране. Кроме того, между текстом Recent follower: и <object> имеется вертикальное расстояние не менее 40 пикселей, причем текст является довольно низким по сравнению с текстовыми данными (см. Изображение ниже) marquee.

Я знаю, что с каждым из приведенных выше кодов что-то не так, поэтому любая помощь будет принята с благодарностью. Я предполагаю, что использование <object> может быть причиной root пробелов. Я также планировал попытаться сделать преобразование текста, чтобы добавить к этому, но без какой-либо полезной функциональности, не уверен, как это будет go.

1 Ответ

0 голосов
/ 12 марта 2020

Таким образом, после того, как вы немного поиграли с этим в течение последних 24 часов или немного больше, и немного больше исследователей, появляется возможность использовать JavaScript для чтения текстовых файлов только в локальной среде (например, диск C:\, или локальный html, java код / ​​сценарии и текстовые документы) не работает. Проблемы многогранны:

 - XMLHttpRequest at 'file:///path/file.txt' from origin 'null' has been blocked by CORS policy
 - GET file:///path/file.txt net::ERR_FAILED
 - Uncaught DOMException: Failed to execute 'send' on ...

Я пытался установить расширение для отключения CORS (даже из локальных файлов), но оно не работало и продолжало выдавать ошибку. Ошибки GET file и DOMException генерируются для всех трех типов кода.

Сегодня я попытался использовать несколько утилит, включая java.util.scanner. К сожалению, та же самая ошибка CORS продолжала генерироваться. Похоже, что если вы не собираетесь запускать Javascript чтение текстовых сценариев вне веб-сервера, надежды на это нет.

К счастью, Javascript marquee работает, но я буду Нужно сделать некоторую работу, чтобы исправить проблемы с пробелами с помощью <object>, или найти альтернативное решение для использования <object>.

...