From ce98ea08d5c866653ccc4ba1052a394fd4c830a3 Mon Sep 17 00:00:00 2001 From: Slava Kim Date: Thu, 9 Oct 2014 15:22:19 -0700 Subject: [PATCH] Explicitly ban some names for Templates. Fixes the test failure on IEs because for IEs 'name' is not a magical property on functions. --- packages/templating/templating.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/templating/templating.js b/packages/templating/templating.js index e9de901ef2..ecd4007d5a 100644 --- a/packages/templating/templating.js +++ b/packages/templating/templating.js @@ -8,9 +8,15 @@ */ Template = Blaze.Template; +var RESERVED_TEMPLATE_NAMES = "__proto__ name".split(" "); + // Check for duplicate template names and illegal names that won't work. Template.__checkName = function (name) { - if (name in Template) { + // Some names can't be used for Templates. These include: + // - Properties Blaze sets on the Template object. + // - Properties that some browsers don't let the code to set. + // These are specified in RESERVED_TEMPLATE_NAMES. + if (name in Template || RESERVED_TEMPLATE_NAMES.indexOf(name) !== -1) { if ((Template[name] instanceof Template) && name !== "body") throw new Error("There are multiple templates named '" + name + "'. Each template needs a unique name."); throw new Error("This template name is reserved: " + name);