1 JS兼容
1.1 event
使用event时,如果 jquery click等事件函数上自带event参数,那么尽量用此参数,因为这种方式兼容chrome和firefox。如果自己在代码块里直接使用 event,firefox不兼容,至少firefox 64版本是这样的。下面是一些兼容写法:
(1)直接在html上写

(2)在jquery事件参数上写


附上 eventutil.getTarget 函数:
eventutil.getTarget = function (event) { //返回事件的实际目标
return event.target || event.srcElement;
};
1.2 underscope.js template 使用 html encode
下面的underscope template 是 ember模板页 policy-grid.hbs上的一部分:
<script type="text/template" id="policy-grid-cell-dropdown-tpl">
<h4 class="ui dividing header user-none-select" style="margin:0">
<span class="foldable-dividing" style="font-size:12px">
<span class="small glyphicon glyphicon-triangle-bottom" style="margin-right:3px;"></span>
@@groupNameContent@@
</span>
</h4>
<div class="foldable-dividing-content" style="display:none;">
<div style="margin-left:20px;">
@@itemContent@@
</div>
</div>
</script>
<script type="text/javascript">
var dropdownCellTpl = _.template($("#policy-grid-cell-dropdown-tpl").html());
</script >
在chrome中一点问题都没有,但是在firefox中,$("#policy-grid-cell-dropdown-tpl").html()得到的是空数据,这是因为 template 中使用了 <>这种,将他们改为 <; >; 后,就不是空数据了,此时也兼容 chrome。