2

Dan Webb 对 Prototype 的Low Pro UJS 扩展提供了以下优雅的 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 中却令人欣喜若狂,并出现错误“对象不支持此属性或方法”

了解 Dan Webb 的 DOM Builder 可能会做什么来包装与 IE 不兼容的 Element.new 吗?

4

2 回答 2

1

我想“对象不支持此属性或方法”错误来自对 Prototype 的扩展元素方法之一的调用(在 IE 中不会自动应用)。但是,您正在处理的所有元素都来自 LowPro 或 $() 函数,它们应该为您扩展元素。

你可以试试这个,看看它是否能解决问题:

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

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

如果这样可以解决问题,那么 LowPro 不会扩展元素,这很奇怪。如果没有,那么肯定有其他问题,您可以在某处发布演示页面吗?

于 2009-02-06T18:03:10.327 回答
0

从 v1.6 开始,Prototype有一个内置的元素构造函数。语法与 Low Pro 略有不同。

$('a_list').insert(new Element("li", {id: 'item-1'})).update('some text').wrap('strong')
于 2009-01-12T19:45:42.253 回答