Подскажите, пожалуйста, есть ли возможность с помощью джса повлиять на будущие html элементы?
На странице подгружается таблица со списком контактных данных клиента. Доступа к исходному коду нет, это сторонняя СРМка.
Я могу найти нужную ячейку с помощью js и задать ей display:none; или вообще удалить через remove(), но прошаренный сотрудник заметит мигание элемента, отключит джс на странице или просто в исходном коде найдет скрытый элемент.
Можно ли как-то ДО отрисовки DOM на стороне клиента удалить элемент (задать какое-то правило, чтобы вот этот элемент не отрисовывался)? Чтобы остался единственный способ увидеть скрытое - это отключить джс в браузере?
Как это будет работать - есть возможность в хэдер страницы вставить произвольный скрипт. Это единственная возможность хоть как-то "поиграться" со страницей :(
костыль, но простой - воткни скрипт лоадера в хедер, который будет закрывать всю страницу лоадером. а за лоадером уже делай че хочешь. итого человек не увидит моргание
Danya Wyse, нет, это просто для понимания ситуации. Представь, что у тебя загружается тостер, а потом после загрузки исчезает блок с заголовком вопроса. Ты это замечаешь и из интереса можешь полезть в исходный код)
1. Написать расширение для браузера.
2. пустить трафик через свой прокси и там резать ненужное. Тогда и отключение js не поможет. До клиента дойдет только измененная разметка.
Сергей delphinpro, мы работаем в срм, которая распространяется по модели SaaS. Поэтому второй вариант отпадает, а расширение никто принудительно ставить не будет)
Mishcake, что-то я не понял. СРМ у вас хостится, или в сети? Если у вас - то как бы есть доступ к сорцам (понимаю, что на самом деле нет, раз вы об этом упомянули). Но как тогда вы можете воткнуть скрипт в страницу?
И в любом случае, у вас на серваке, или в интернете – почему нельзя на выходе из офиса воткнуть прокси?
Вы как-то детальнее проблему обозначайте что ли...
А вообще, если это сторонний сервис, не лучше ли было бы обратиться на их форум или в поддержку? Я хочу сказать, что если вы хотите скрывать от сотрудников какие-то данные, то их в принципе не должно быть. Должна быть в СРМ какая-то система распределения доступа.
Что касается ответа на вопрос из заголовка поста "Можно ли повлиять на DOM до загрузки?", то третьего варианта, кроме упомянутых выше я не могу придумать.
Впрочем даже расширение будет отрабатывать уже после загрузки DOM. Тут логика железная – нельзя изменить то, чего еще нет.
Если есть доступ к HTML-коду страницы (можете же добавить свой JS-код, так?) - значит можно и удалить/изменить/добавить что-то в этом HTML-коде. А дальше уже - легче лёгкого.
Но автор явно что-то недоговаривает, темнит и петляет. Неспроста это...
AUser0, доступа к html-коду нет. Это СРМка, которую мы берем в аренду (типа АмоСРМ).
У них есть функционал, где я могу вставить любой код в хэдер страницы без доступа к редактированию этого. хэдера или чего-то другого. Просто блок, в который я пишу код, а он потом добавляется в хэдер. Это единственное, как я могу повлиять на страницу, чтобы это распространилось на всех сотрудников СРМ.
Mishcake, кстати, вдруг вспомнилось. Есть плагины для браузеров, которые видят код страницы ещё до её отображения, и могут этот код менять. Но централизованного управления таким плагином я не видел. То есть нужно в каждом браузере вручную настраивать правила замены...
P.S. Ну или userscript.
К сожалению, все ломается на первом шаге. Прежде чем скрыть таблицу, она загружается, отображается и только потом применяется стиль или выполняется мой js:(
veryshake, это же гениально)) Только скрипт почему-то стал срабатывать не с первого раза (как будто не видит дом-элемент, хотя скрипт в конце body и внутри функция обернутая в window.onload), но это уже нюансы) Спасибо!