Есть документ (список <li></li>), который редактируется в браузере. Проблема: если этот документ открыть в другой вкладке, его также можно редактировать, что может вызвать конфликт/коллизию при сохранении в БД (в одной вкладке элемент списка удален, а в другой к нему добавили изображение, например). Прошу совета, существуют ли решения отследить открытие документа в другой вкладке? Например, с помощью js или любым другим способом?
заведи идентификтор в базе, когда открыл документ на редактирование например перевел в true аначе false по умолчанию. Далее просто проверяешь документ открыт ли на редактирование или нет. Это то что пришло в голоу. И делать на стороне php.
Можно создать временную таблицу для контроля версий, т.е. при редактировании данные тянутся с основной таблицы, при сохранении пишется во временную, проверяет наличие других версий по ID элемента, и при необходимости сообщается о наличии других версий, либо если всё в порядке переносится в основную таблицу.
Проще всего не писать в б\д, отнимая ресурсы хостинга, и не использовать php. Для этого существует механизм Session Storage в самом браузере. Алгоритм простой. Проверяете в javascript'е наличие в Session Storage какого-то флажка типа "editing=true". Если есть, закрываете вкладку или алерт какой-нибудь, а если нет его, то записываете это значение в Session Storage. см. здесь: https://ru.wikipedia.org/wiki/Web_Storage https://developer.mozilla.org/ru/docs/Web/API/Window/sessionStorage https://itchief.ru/lessons/javascript/javascript-sessionstorage-and-localstorage Local Storage не исчезает с закрытием браузера - этим и отличается от Session Storage. https://www.w3schools.com/html/html5_webstorage.asp