Low Pro Prototype DOM Builder работает в IE? - PullRequest
2 голосов
/ 12 января 2009

Дан Уэбб Low Pro Расширение UJS для Prototype предлагает следующий элегантный DOM Builder:

var listItem = $li({ id : 'item-1' }, 
                 $strong("Some text")
               ); 
// returns a node equivalent to: <li id="item-1"><strong>Some text</strong></li>

$('a_list').appendChild(listItem);

Хотя это работает для нас как Firefox и Safari, как мечта, в IE 6 и IE7 он взрывается с удовольствием с ошибкой «Объект не поддерживает это свойство или метод»

Любое понимание того, что может сделать DOM Builder Дэна Уэбба, чтобы обернуть Element.new, который не совместим с IE?

Ответы [ 2 ]

1 голос
/ 06 февраля 2009

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

Вы можете попробовать это и посмотреть, решит ли это проблему:

var listItem = Element.extend($li({id: 'item-1'}, 
    Element.extend($strong("Some text"))
));

$('a_list').appendChild(listItem);

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

0 голосов
/ 12 января 2009

Начиная с версии 1.6, Prototype имеет встроенный конструктор элементов. Синтаксис немного отличается от Low Pro.

$('a_list').insert(new Element("li", {id: 'item-1'})).update('some text').wrap('strong')
...