Подтвердить что ты не робот

JQuery: Javascript throws Ошибка "Операция небезопасна" при установке значения

Я пытаюсь найти резервное решение для браузеров, которые не интерпретируют атрибут placeholder для элементов ввода. У меня этот простой jQuery Script, но он вызывает ошибку

SecurityError: "The operation is insecure.
this.value = val;"

Здесь мой script:

$('document').ready(function(){
       $('input').each(function() {
           if ($(this).val() === '' || $(this).val() === undefined) {
               $(this).val($(this).attr('placeholder'));
           }
       });
});

Любые идеи, что я могу сделать? Или что я делаю неправильно? Или что эта ошибка означает? Это происходит в Firefox, еще не проверял его в других браузерах.

4b9b3361

Ответ 1

Я только что исправил аналогичную проблему в моем проекте. Оказалось, что я пытаюсь установить значение входа <input type="file" ...>. Кажется, что вы столкнулись с одной и той же проблемой, потому что вы выбираете все входы документа независимо от их типа.

Если у вас установлен firebug, попробуйте найти вход, который вызывает эту ошибку, вставив команду log, прежде чем пытаться изменить входное значение.

$('document').ready(function(){
       $('input').each(function() {
           if ($(this).val() === '' || $(this).val() === undefined) {

               // Log goes here
               window.console.log(
                   'There is an input without a value!', 
                   this);

               $(this).val($(this).attr('placeholder'));
           }
       });
});

Ответ 2

У меня было небезопасное предупреждение в сочетании с функцией antoher. Причина просто заключалась в том, что библиотечная функция вызывалась с массивом, заданным как параметр, но ожидала элемент (dom). Результат был ожидаемым, но я уверен, это не будет ни в коем случае. Поэтому проверьте, не хотят ли типы ваших переменных принадлежать вам (или другой стороне).