From 06c9cfbb4730d987408c0fa1922c595bed680d53 Mon Sep 17 00:00:00 2001 From: Churchill Lee Date: Wed, 28 Jun 2017 10:52:07 +0800 Subject: [PATCH 1/2] fix(dataset): check if property exist before deleting in Safari, when it is `use strict`, if the dataset property is removed in DOM deleting it again will cause an error closes #309 --- src/modules/dataset.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/modules/dataset.ts b/src/modules/dataset.ts index 3af23d2..d9070ea 100755 --- a/src/modules/dataset.ts +++ b/src/modules/dataset.ts @@ -19,7 +19,7 @@ function updateDataset(oldVnode: VNode, vnode: VNode): void { for (key in oldDataset) { if (!dataset[key]) { - if (d) { + if (d && d[key]) { delete d[key]; } else { elm.removeAttribute('data-' + key.replace(CAPS_REGEX, '-$&').toLowerCase()); @@ -38,4 +38,4 @@ function updateDataset(oldVnode: VNode, vnode: VNode): void { } export const datasetModule = {create: updateDataset, update: updateDataset} as Module; -export default datasetModule; \ No newline at end of file +export default datasetModule; From 16b14888b7524005acc6c741d7da0700b94d292f Mon Sep 17 00:00:00 2001 From: Churchill Lee Date: Sat, 1 Jul 2017 12:22:18 +0800 Subject: [PATCH 2/2] refactor(dataset): protect delete invocation only --- src/modules/dataset.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/modules/dataset.ts b/src/modules/dataset.ts index d9070ea..a49204b 100755 --- a/src/modules/dataset.ts +++ b/src/modules/dataset.ts @@ -19,8 +19,10 @@ function updateDataset(oldVnode: VNode, vnode: VNode): void { for (key in oldDataset) { if (!dataset[key]) { - if (d && d[key]) { - delete d[key]; + if (d) { + if (key in d) { + delete d[key]; + } } else { elm.removeAttribute('data-' + key.replace(CAPS_REGEX, '-$&').toLowerCase()); }