From 595b4824787ea20a2ec46194ea7f068ddeaf391f Mon Sep 17 00:00:00 2001 From: Andreas Svensson Date: Fri, 8 Nov 2013 22:45:27 +0100 Subject: [PATCH] JSXTransformer now supports IE8 --- package.json | 4 ++-- vendor/browser-transforms.js | 16 ++++++++++------ 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/package.json b/package.json index 865f4a0a9b..670c608cb0 100644 --- a/package.json +++ b/package.json @@ -37,8 +37,8 @@ }, "dependencies": { "commoner": "~0.8.7", - "esprima-fb": "~1001.1001.2000-dev-harmony-fb", - "jstransform": "~1.0.1" + "esprima-fb": "~2001.1001.0-dev-harmony-fb", + "jstransform": "~2.0.1" }, "devDependencies": { "browserify": "~2.34.1", diff --git a/vendor/browser-transforms.js b/vendor/browser-transforms.js index 909e218ba6..e02ff562cc 100644 --- a/vendor/browser-transforms.js +++ b/vendor/browser-transforms.js @@ -43,7 +43,7 @@ var run = exports.run = function(code) { var functionBody = jsx ? transform(code).code : code; var scriptEl = document.createElement('script'); - scriptEl.innerHTML = functionBody; + scriptEl.text = functionBody; headEl.appendChild(scriptEl); }; @@ -75,11 +75,15 @@ var load = exports.load = function(url, callback) { runScripts = function() { var scripts = document.getElementsByTagName('script'); - scripts = Array.prototype.slice.call(scripts); - var jsxScripts = scripts.filter(function(script) { - return script.type === 'text/jsx'; - }); - + + // Array.prototype.slice cannot be used on NodeList on IE8 + var jsxScripts = []; + for (var i = 0; i < scripts.length; i++) { + if (scripts.item(i).type === 'text/jsx') { + jsxScripts.push(scripts.item(i)); + } + } + console.warn("You are using the in-browser JSX transformer. Be sure to precompile your JSX for production - http://facebook.github.io/react/docs/tooling-integration.html#jsx"); jsxScripts.forEach(function(script) {