Ответ Ajax / fetch урезан

Проблема с инструкциями условного перехода в 16-разрядном ассемблере заключается в том, что они ограничиваются +127 или -128 байтами для смещения.

386 ввел кодировку jcc rel16, которая доступна в 16-разрядный режим, но только на 386 и позже. Различные ассемблеры имеют разные опции для включения 386 команд в 16-битном коде

. Некоторые также имеют опции для автоматического выполнения описанных ниже действий: условный jcc rel8 по jmp rel16. Например, TASM имеет /jJUMPS .


Допустим, у вас есть это:

    cmp al, '1'
    jnz ItsNot1
    ; lots of code here
ItsNot1:

Если вы выпрыгнете из диапазона вы можете перекодировать его так:

    cmp al, '1'
    jz Its1
    jmp ItsNot1
Its1:
    ; lots of code here
ItsNot1:

Все, что я сделал, это изменение смысла сравнения и переход вокруг безусловного перехода, который приведет вас к альтернативному коду.

Иногда это раздражает, если у вас много условных прыжков. Вы перекодируете один из них, и это вызовет другое. И тогда вы реорганизуете код и обнаружите, что некоторые из этих искаженных условностей могут исчезнуть. Обычно я не беспокоюсь об этом, если меня серьезно не беспокоит размер кода.

Некоторые ассемблеры имеют переключатель, который будет делать автоматическое определение размера для вас, чтобы вы всегда могли кодировать условные переходы,

Скорее всего, разница между

PRINT 'something'

и

call PTHIS
db 13, 10, 'something'

Является ли это первой один - это макрос, который расширяется до полного кода для печати, плюс строка, которую вы хотите распечатать. Вторая - простая команда call (3 байта) плюс строка. Или, в терминах C ++, макрос PRINT похож на встроенную функцию, а call PTHIS является обычным (не встроенным) вызовом функции.

0
задан user11105889 23 February 2019 в 18:42
поделиться

3 ответа

В вашем gif он показывает только то, что отладчик показывает усеченное значение. Можете ли вы проверить длину строки внутри функции parseComicsList и прежде чем делать console.log?

Вы можете проверить его значение в разделе scope, он имеет полная длина до последнего закрывающего тега

enter image description here

0
ответ дан Tech Alpha 23 February 2019 в 18:42
поделиться

Ваш загруженный html просто в порядке. Проблема в вашей функции parseComicList, потому что она ищет имя класса, которого нет в очищенном HTML-коде. Позвольте мне объяснить, что происходит.

Когда вы загружаете www.gocomics.com в свой браузер и просматриваете html, есть несколько тегов img с именами классов img-fluid lazyloaded, которые вы ищете, и другие с именами классов lazyload img-fluid. Прокрутите немного и снова проверьте HTML. Вы заметите, что теги img с именами классов lazyload img-fluid изменились на img-fluid lazyloaded. Смотрите скриншот ниже:

class names change while you scroll

Это поведение, используемое этим сайтом, чтобы определить, ожидает ли изображение отложенную загрузку или нет, который обрабатывается внутри с помощью JavaScript при прокрутке сайта. Этот тип сценария отложенной загрузки обычно проверяет, находится ли изображение в окне просмотра или близко к входу в окно просмотра, и это делается путем сравнения положения прокрутки с положением изображения. Только тогда имена классов lazyload img-fluid изменятся на img-fluid lazyloaded.

Ваш вызов извлечения загружает только html-страницу этой страницы, но браузер не взаимодействует с этим кодом, то есть прокрутка отсутствует. Это означает, что, основываясь на моих наблюдениях о том, как имена классов этого сайта будут работать во время прокрутки, вы не найдете изображений с именами классов img-fluid lazyloaded.

Вместо этого сделайте html.indexOf('lazyload img-fluid'), чтобы искать изображения с начальным именем класса, и это будет работать. См. Пример ниже:

finding images with the initial class name

Еще один совет, который не подвергает вас ленивой загрузке логики сайта, - поиск тегов предков. со статическими именами классов, такими как comic__image или item-comic-image, а затем - нахождение первого тега img сразу после этой позиции. В некоторых случаях это может быть лучше, потому что это поможет вам убедиться, что вы сопоставляете только изображения внутри постов, вместо того, чтобы сопоставлять любые ленивые изображения загрузки сайта. В этом случае он начинает пропускать первое изображение, которое находится внутри верхнего баннера. См. Пример ниже:

alternatively looking for ancestor tags with static class names

0
ответ дан fmoliveira 23 February 2019 в 18:42
поделиться

Вы отправляете запрос GET. Он работает как ожидалось - он возвращает вам HTML страницы. Если вы хотите выполнить запрос POST, он должен быть в форме

 fetch("server.com/potatoes", {
    method: "POST",
    headers: {
      Accept: "application/json",
      "Content-type": "application/json",
    },
  })
    .then(res => {
      return res.json();
    })
    .then(res => {
      console.log(res);
    })
    .catch(e => {
      console.log(e);
    });

Заголовки не требуются, и если вы их не включите, они будут автоматически добавлены. Их нужно менять в зависимости от того, какой ответ вы ожидаете.

0
ответ дан jeyko 23 February 2019 в 18:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: