«установка свойства, которое имеет только геттер» - ошибка JavaScript с Firefox - PullRequest
5 голосов
/ 09 августа 2009

До недавнего времени я использовал Safari 4 для тестирования и отладки моего текущего плагина jQuery. Я попробовал свой код в Firefox, и он начал жаловаться на что-то в JQuery-Framework: «установка свойства, которое имеет только геттер». Я попытался выяснить, какая строка заставляет Firefox жаловаться, и обнаружил, что это происходит где-то здесь **

$.fn.util.create_$dom = function(opt) {
    var $dom = {};
    $.each(opt.dom,function(name,val){
        console.log(name);
        var $elm = $('<div>');
        $.each(opt.dom[name],function(_name,_val){
            if(_name == 'tagName') $elm = $('<'+_val+'/>');
        });
                    console.log(name+': ok');
        $.each(opt.dom[name],function(_name,_val){             **here       
            switch(_name){                                     **here
                case 'className': $elm.addClass(_val);         **here
                default: $elm.attr(_name, _val);               **here
            }                                                  **here
        });
        $dom[name] = $elm;
        console.log(name+': ok');
    });
    return $dom;
};

options.dom выглядит так:

    dom:{
        wrapper:{className:'wrapper'},
        inner:{tagName:'p',className:'test',test:'bla'}
    },

Ответы [ 2 ]

7 голосов
/ 09 августа 2009

Похоже, вы пытаетесь установить tagName элемента с этой строкой

$elm.attr(_name, _val); 

Это, конечно, невозможно, так как доступно только для чтения.

3 голосов
/ 09 августа 2009
case 'tagName': break;

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

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