Что такое спекулятивный парсинг?

Это решение убрать клавиатуру при нажатии return в в любом текстовом поле , добавив код в одном месте (поэтому не нужно добавлять обработчик для каждого текстового поля):


рассмотрим этот сценарий:

у меня есть viewcontroller с двумя текстовыми полями (имя пользователя и пароль). и viewcontroller реализует UITextFieldDelegate протокол

. Я делаю это в viewDidLoad

- (void)viewDidLoad 
{
    [super viewDidLoad];

    username.delegate = self;
    password.delegate = self;
}

, а viewcontroller реализует дополнительный метод как

- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
    [textField resignFirstResponder];
    return YES;
}

и независимо от текстовое поле, в котором вы находитесь, как только я нажму return на клавиатуре, оно будет отклонено!

В вашем случае то же самое будет работать, если вы установите для всех делегатов текстового поля значение self и реализуете textFieldShouldReturn

11
задан AraK 2 July 2009 в 06:20
поделиться

2 ответа

Это все связано с этой записью в bugzilla: https://bugzilla.mozilla.org/show_bug.cgi?id=364315

В этой записи Андерс Холбёлль предложил :

Похоже, что при обнаружении тега сценария, который ссылается на внешний файл, браузер не пытается загрузить какие-либо элементы после тега скрипта до тех пор, пока загружаются файлы внешних сценариев. Это делает сайты, ссылающиеся на несколько или большие файлы javascript, медленно.
...
Здесь сначала будет загружен file1.js, а затем - file2.js. затем img1.gif, img2.gif и file3.js будут загружены одновременно. Когда file3.js имеет загружен полностью, img3.gif будет загружен.

Кто-то может возразить, что поскольку js-файлы могут содержать, например, строку вида " document.write ('", нет никакого способа узнать, есть ли какое-либо содержание следующий за тегом сценария будет отображаться до того, как сценарий будет выполнен.

Но я бы предположил, что гораздо более вероятно, что содержимое будет показано чем нет. И в наши дни страницы часто ссылаются на многие внешние файлы javascript (ajax-библиотеки, статистика и реклама), которые с текущим поведением вызывает сериализацию загрузки страницы.

Таким образом, по сути, синтаксический анализатор html продолжает читать через файл html и загружать ссылки, на которые есть ссылки, даже если его отображение заблокировано из-за сценария.

Это называется " спекулятивно "потому что сценарий может делать такие вещи, как установка параметров css, таких как" display: none "или комментирование разделов следующего html, и тем самым делая загрузку сертификатов ненужной ... Однако в 95 % варианта использования будет загружено большинство ссылок, поэтому синтаксический анализатор обычно угадывает правильно.

25
ответ дан 3 December 2019 в 03:19
поделиться

Я думаю, это означает, что когда браузер обычно блокирует (например, для тега сценария), он будет продолжать анализировать HTML. Он не создаст реальную модель DOM до тех пор, пока недостающие части не будут загружены, но он начнет извлекать файлы сценариев и таблицы стилей в фоновом режиме.

3
ответ дан 3 December 2019 в 03:19
поделиться
Другие вопросы по тегам:

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