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。