Vue.jsや素のJavaScriptコードのIE対応
アナリティクスのデータを解析していたら意外とIEからのアクセスが多く、割合としては全体の1割程度あり、これまでVue.jsを使用しているページについてはIEを完全に無視して作っていましたが、さすがにまったく動作しないのも問題だったので、この際、IEに対応することにしました。
目次
- アナリティクス(IEの割合)
- Key/Value
- function
- アロー関数(=>)
- テンプレートリテラル(バッククォート)
- 最後に
- 参考リンク
アナリティクス(IEの割合)
Key/Value
IEではKey/Valueを省略した以下のような記述はNGです。
const routes = [
{ path: '/list' },
{ path: '/list/:cid/:tid' },
];
const router = new VueRouter({
mode: 'history',
routes
});
実行するとコンソールに「':' がありません」と出力されて処理が中断します。
修正方法は以下のようにKey/Valueをどちらも記述します。
const router = new VueRouter({
mode: 'history',
routes: routes
});
function
IEではfunctionの省略もNGです。
const router = new VueRouter({
mode: 'history',
routes: routes,
scrollBehavior(to, from, savedPosition) {
return savedPosition
}
});
実行するとKey/Valueを省略した時と同じで、コンソールに「':' がありません」と出力されて処理が中断します。
修正後のコードは以下の通り。
const router = new VueRouter({
mode: 'history',
routes: routes,
scrollBehavior: function(to, from, savedPosition) {
return savedPosition
}
});
アロー関数(=>)
forEach()などで使うアロー関数(=>)も使えません。
products.forEach(x => {
console.log(x);
});
アロー関数の場合、「構文エラーです」というエラーが出力されます。
修正後のコードは以下の通り。
products.forEach(function(x) {
console.log(x);
});
テンプレートリテラル(バッククォート)
個人的に一番面倒だったのはテンプレートリテラル(バッククォート)が使えないことでした。
var title = 'サンプル';
var html = `
<div class="content">
<span>${title}</span>
</div>
`;
上記のコードを実行すると、「文字が正しくありません」というエラーが出力されます。
修正後のコードは以下の通り。
var title = 'サンプル';
var html =
'<div class="content">' +
' <span>' + title + '</span>' +
'</div>';
最後に
IEっていつになったら完全に消滅してくれるんでしょうか...