2016-08-14 2 views
1

Я пытаюсь создать редактор содержимого. Этот контент-контент загрузит HTML-документ (с JavaScript) в, например, элемент #result. Проблема в том, что если внутри этого элемента HTML есть, например, $("input").hide();, то все мои входы удаляются по всей странице, поэтому не только внутри загруженного HTML (моя цель).Как изолировать элемент div?

Что я хочу делать с редактором, когда клиент нажимает на элемент, который представляет что-то в базе данных, информация этого элемента будет всплывать, и пользователь сможет отредактировать это. (Таким образом, если пользователь навешивает форму с помощью класса «контакт-форма» (который находится в базе данных, связан с на загруженной странице), в новом окне появится информация об этом конкретном элементе формы.

Кроме того, я не могу полностью отключить Javascript, поскольку загруженный HTML может содержать Javascript для укладки и т.д.

Моя цель:. Удалить Javascript, что может раздражать, когда пользователь загружает в HTML-файл, как предупреждение(); Также удалите возможность для Javascript редактировать что-то за пределами собственного DOM.

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

Редактировать: Похоже, что этот вопрос может быть слишком широк, глядя на комментарии. Резюме моего вопроса: Как отключить alert() для определенного div и как я могу создать песочницу, чтобы код внутри div мог изменять только элементы из этого div.

+1

Пожалуйста, разместите код. и где именно вы столкнулись с проблемой. –

+0

вам не нужен песочница этого div в этом случае. ищите SQL-инъекцию, это точно так же, как и тот, который ... ну, по крайней мере, причина.поэтому, чтобы избежать этого, используйте методы, используемые для избежания инъекции sql. –

+0

также, когда и захватить этот редактируемый контент, конвертировать все специальные символы в соответствующие html-объекты. Google для html-объектов –

ответ

1

Что вы ищете - это санитарная обработка HTML. Это процесс удаления любого опасного содержимого из фрагмента HTML на сервере, прежде чем он будет загружен в браузере. Существует множество библиотек для санитарии, которые могут блокировать теги сценариев, теги объектов и т. Д. Помните, что вы не можете санировать javascript, потому что к тому времени, когда вы ввели ваш скрипт, еще один вредоносный скрипт, возможно, уже загружен и запущен.

Единственный способ эффективно изолировать среду javascript с помощью iframes. Вы заметите, что такие сайты, как CodePen, JSBin и JSFiddle, используют их широко. Есть нечто, называемое ShadowDOM, которое является основой веб-компонентов, но пока еще не очень хорошо поддерживается.

Чтобы вы могли запускать свои собственные скрипты с интерфейсом, которые допускают зависание, вы можете вставить свой скрипт после вашего процесса санитарии. Таким образом, если он загружен внутри iframe, ваш скрипт также будет загружен.

И, наконец, alert() не относится ни к каким элементам на DOM. Вы можете вызвать предупреждение, как только загружается страница, например. Однако, если вы пытаетесь предотвратить появление предупреждений о взаимодействиях пользователей, вы можете попробовать удалить все прослушиватели событий из определенного элемента. Однако это не понадобится, если вы будете санировать HTML-теги скриптов, поскольку сценарий не имел бы возможности загружать, поэтому слушателей событий не будет.

+0

Отлично! Спасибо! Это то, что я искал. –

Смежные вопросы