Javascript для изменения веб-контента при нажатии на ячейку - PullRequest
0 голосов
/ 04 декабря 2018

Я работаю в приложении для iOS с WhatsApp Web и придаю ему новый вид в приложении.

Я реализую некоторые функции JS в WkWebView, такие как изменение значений ширины, цвета фонаи другие вещи, но я застрял в точке.

Как вы можете знать или не знать, WhatsApp Web App имеет два основных столбца, один из них показывает чаты, а другой показывает выбранныйчат.Например:

WhatsApp Web sample image

На данный момент мне удалось загрузить веб-приложение в wkWebView и присвоить столбцу чатов 100% ширины устройства.Но теперь мне нужно поймать щелчок по «ячейке» в этом столбце, чтобы изменить значение ширины на другую сторону веб-приложения.

Другая проблема заключается в том, что на iPhone мне нужно дважды нажать в «ячейке», чтобы загрузить данные чата в правом столбце.Итак, вопрос в том, может ли кто-нибудь помочь мне решить мои сомнения или дать мне небольшую подсказку?

Спасибо большое!МВт

1 Ответ

0 голосов
/ 07 декабря 2018

Что ж, за несколько дней исследований функций JS мне удалось обнаружить события касаний в веб-представлении.Предложение, которое вы можете проверить в java-консоли web.whatsapp.com, выглядит следующим образом:

function handleStart(evt) {
   evt.preventDefault();
   console.log('touchstart');
}
elements=document.getElementsByClassName('NAME');
for (var i = 0; i < elements.length; i++) {
   elements[i].addEventListener("touchstart", handleStart, false);
}

evt.preventDefault(); предотвращает выполнение потока касания, поэтому, если вы хотите, чтобы он работал, простозакомментируйте эту строку.

С помощью этих функций вы можете обрабатывать начало касания, конец касания, перемещение касания и многое другое ...

Другое дело, если вы хотите выполнить это предложение в WkWbViewв iOS вам просто нужно вызвать функцию JS следующим образом:

jsString = @"function handleStart(evt) {evt.preventDefault();console.log('touchstart.');} \
                    elements=document.getElementsByClassName('NAME'); \
                    for (var i = 0; i < elements.length; i++) { \
                        elements[i].addEventListener('touchstart', handleStart, false); \
                    }";
[self callJS:jsString];

И функция callJS должна будет вызвать это:

[_wkWebView evaluateJavaScript:jsString completionHandler:^(id response, NSError *error) {
    if (error)
        NSLog(@"%@", error.description);
}];

И вЕсли вы хотите «прочитать» щелчок по ячейке левого столбца, не связываясь с другими событиями, вы можете обработать касание с событием щелчка следующим образом:

elements=document.getElementsByClassName('NAME');
for (var i = 0; i < elements.length; i++) {
   elements[i].addEventListener('click', 'console.log('click')', false);
}

Надеюсь, это поможет!

...