Можно ли запретить импортированному коду javascript изменять мой дом

Что я хочу сделать, так это позволить другим людям иметь возможность кодировать свою собственную логику для отображения содержимого определенного элемента div, который я им даю. Это пространство, в которое они могут свободно добавлять элементы DOM, настраивать их с помощью собственного CSS и проектировать так, как они хотят.

Однако, когда я это делаю, я сталкиваюсь с проблемой конфликтов CSS и конфликтов глобальных переменных Javascript. Я столкнулся с теневым DOM, и будет ли эта технология подходящей для этого варианта использования? Если да, то как запретить другим выбирать элементы DOM за пределами их теневого DOM? Например, если они делают что-то вроде $('body') с помощью jquery и начинают его изменять.

Еще одна вещь, которую следует учитывать, это то, что люди будут отображать внутри этого данного элемента div, зависит от получения данных из моего веб-приложения. Хорошим примером может быть поток данных и некоторый неизвестный тип диаграммы, которую они могут разработать для отображения данных в реальном времени.


person jiminssy    schedule 26.05.2016    source источник
comment
создание пространства iframe должно помочь   -  person Rajshekar Reddy    schedule 26.05.2016
comment
Не могли бы вы уточнить, что и как пользователи строят внутри <div>? Чтобы предоставить пользователям доступ к некоторым данным, вы можете разрешить своим пользователям создавать подключение через веб-сокет или запрос REST к вашему веб-серверу. Однако, если вы хотите создать связь между вашим сайтом и iframe с помощью JavaScript, у вас не так много вариантов. Единственная возможность, которую я вижу здесь, - это добавить некоторые параметры к ссылке iframe, например. src="index.html?param1=value1"   -  person ssc-hrep3    schedule 27.05.2016


Ответы (2)


Используйте песочницу iframe. У вас есть несколько вариантов запретить скрипты или позволить странице вести себя так, как будто она находится в другом домене. Вы можете найти все варианты здесь: http://www.w3schools.com/tags/att_iframe_sandbox.asp

Примером вашего варианта использования может быть: <iframe sandbox="allow-scripts" src="anotherpage.html"></iframe>

person ssc-hrep3    schedule 26.05.2016
comment
Спасибо за ответ. Я забыл упомянуть что-то в своей проблеме, поэтому я добавил это выше. - person jiminssy; 26.05.2016

Если вы не хотите использовать iframe с атрибутом sandbox, ответ сортировки — НЕТ. Это невозможно.

JavaScript запускается внутри окна и имеет полный доступ к документу в окне. Вы можете попробовать изменить некоторые функции, но сделать это правильно невозможно.

Просто используйте iframe для этого.

person Andreas Furster    schedule 26.05.2016