diff --git a/katex.js b/katex.js index bfbda8104..b89efddff 100644 --- a/katex.js +++ b/katex.js @@ -244,6 +244,10 @@ var clearNode = function(node) { }; var process = function(toParse, baseNode) { + if (utils.isSafari) { + throw new ParseError("KaTeX doesn't work on Safari"); + } + clearNode(baseNode); var tree = parseTree(toParse); diff --git a/utils.js b/utils.js index f31a9e272..c5f0d3c78 100644 --- a/utils.js +++ b/utils.js @@ -13,6 +13,17 @@ function slowContains(list, elem) { var contains = Array.prototype.indexOf ? fastContains : slowContains; +function isSafari() { + var userAgent = navigator.userAgent.toLowerCase(); + + // Steal these regexes from jQuery migrate for browser detection + var webkit = /(webkit)[ \/]([\w.]+)/.exec(userAgent); + var chrome = /(chrome)[ \/]([\w.]+)/.exec(userAgent); + + return webkit && !chrome; +} + module.exports = { - contains: contains + contains: contains, + isSafari: isSafari() };