Как заблокировать функцию JavaScript в локальной области видимости?Я хочу предотвратить использование глобальных переменных - PullRequest
3 голосов
/ 21 мая 2011

Есть ли способ запретить функции использовать глобальные переменные, такие как document, window, navigator и другие объявленные глобальные функции?

РЕДАКТИРОВАТЬ1: И если бы я мог выбрать, какие глобальные объекты, которые ограничены, это было бы здорово, потому что я хотел бы позволить функции использовать в качестве примера объект Math и его функции ...

Ответы [ 2 ]

5 голосов
/ 21 мая 2011

Есть ли способ запретить функции использовать глобальные переменные, такие как документ, окно, навигатор и другие объявленные глобальные функции?

Нет, если только ...

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

Представьте себе:

;(function () {
    var window = "Hello"

    // original content
    function foo () {
        alert(window)
    }
    foo()

})()

Этот подход часто используется в библиотеках для создания частных пространств имен, но в этих случаяхПервоначальный источник также доступен и разработан с учетом этого.Я использовал это с document, прежде чем изменил локальную версию jQuery.

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

Удачное кодирование.

0 голосов
/ 21 мая 2011

Вы можете попросить своих пользователей ограничиться кодом ADsafe .С веб-сайта:

ADsafe позволяет безопасно размещать гостевой код (например, рекламу или виджеты сторонних производителей) на веб-странице.ADsafe определяет подмножество JavaScript, которое является достаточно мощным, чтобы позволить гостевому коду выполнять ценные взаимодействия, в то же время предотвращая злонамеренное или случайное повреждение или вторжение.Подмножество ADsafe может быть проверено механически с помощью таких инструментов, как JSLint, так что для проверки безопасности гостевого кода не требуется проверка человеком.Подмножество ADsafe также применяет хорошие методы кодирования, увеличивая вероятность того, что гостевой код будет работать правильно.

Если вы отметите нужное поле, JSLint проверит, что код совместим с ADsafeи, следовательно, безопасно выполнить на вашем сайте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...