My other related question
(现在回答)现在解决这个问题,基本上我最终得到了:
<div class="snippet">
<elements... />
<script type="text/javascript">
var tmpVarName = 'configOb_'+Math.floor(Math.random()*1111111) ;
document[tmpVarName] = {
remainVisible:true,
hoverBehaviour:false
};
</script>
</div>
…然后在每个页面上加载的脚本中,扫描任何适当的元素以进行实例化和配置:
var snippets = yd.getElementsBy(function(el){
return yd.hasClass(el, "snippet");
},null,document );
for( var i=0; i<snippets.length;i++ )
{
var s = snippets[i] ;
yd.generateId(s, '_snippet_'+i );
var tag = yd.getElementBy(function(el){
return true;
},'script',s );
var ob = new Snippet();
ob.setId( s.id );
ob.init( eval( tag.innerHTML ) );
}
对于上述代码的更完整的上下文;
-
yd=yahoo.util.dom
-
snippet.init()和snippet.setid()是名为snippet()的模块对象上的公开方法
既然我插入的“块”内容没有id属性,并且动态地评估了上下文配置对象,那么我可以随意添加任意多的变体。我唯一真正关心的是性能,如果将这些snippet()对象添加到我的页面中(不太可能)。