From 5e041aaedb934aaa08d62c6ba514ca3b22c6f4e4 Mon Sep 17 00:00:00 2001 From: Peter 'Pita' Martischka Date: Sun, 10 Feb 2013 20:34:27 +0000 Subject: [PATCH] Moved old jquery recognition to seperate file --- src/static/js/ace2_common.js | 15 +---------- src/static/js/jquery_browser.js | 44 +++++++++++++++++++++++++++++++++ src/static/js/rjquery.js | 7 +++++- 3 files changed, 51 insertions(+), 15 deletions(-) create mode 100644 src/static/js/jquery_browser.js diff --git a/src/static/js/ace2_common.js b/src/static/js/ace2_common.js index 4e833892a..7ad7ba0ff 100644 --- a/src/static/js/ace2_common.js +++ b/src/static/js/ace2_common.js @@ -1,5 +1,5 @@ /** - * This code is mostly from the old Etherpad. Please help us to comment this code. + * This code is mostly from the old Etherpad. Please help us to comment this code. * This helps other people to understand this code better and helps them to improve it. * TL;DR COMMENTS ON THIS FILE ARE HIGHLY APPRECIATED */ @@ -34,18 +34,6 @@ function object(o) return new f(); } -var userAgent = (((function () {return this;})().navigator || {}).userAgent || 'node-js').toLowerCase(); - -var browser = { - version: (userAgent.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/) || [])[1], - safari: /webkit/.test(userAgent), - opera: /opera/.test(userAgent), - msie: /msie/.test(userAgent) && !/opera/.test(userAgent), - mozilla: /mozilla/.test(userAgent) && !/(compatible|webkit)/.test(userAgent), - windows: /windows/.test(userAgent), - mobile: /mobile/.test(userAgent) || /android/.test(userAgent) -}; - function getAssoc(obj, name) { return obj["_magicdom_" + name]; @@ -96,7 +84,6 @@ var noop = function(){}; exports.isNodeText = isNodeText; exports.object = object; -exports.browser = browser; exports.getAssoc = getAssoc; exports.setAssoc = setAssoc; exports.binarySearch = binarySearch; diff --git a/src/static/js/jquery_browser.js b/src/static/js/jquery_browser.js new file mode 100644 index 000000000..2bf694074 --- /dev/null +++ b/src/static/js/jquery_browser.js @@ -0,0 +1,44 @@ +/* + Copied from jQuery 1.8, the last jquery version with browser recognition support +*/ + +// Use of jQuery.browser is frowned upon. +// More details: http://api.jquery.com/jQuery.browser +// jQuery.uaMatch maintained for back-compat +var uaMatch = function( ua ) { + ua = ua.toLowerCase(); + + var match = /(chrome)[ \/]([\w.]+)/.exec( ua ) || + /(webkit)[ \/]([\w.]+)/.exec( ua ) || + /(opera)(?:.*version|)[ \/]([\w.]+)/.exec( ua ) || + /(msie) ([\w.]+)/.exec( ua ) || + ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec( ua ) || + []; + + return { + browser: match[ 1 ] || "", + version: match[ 2 ] || "0" + }; +}; + +var userAgent = navigator.userAgent; +var matched = uaMatch(userAgent); +var browser = {}; + +if ( matched.browser ) { + browser[ matched.browser ] = true; + browser.version = matched.version; +} + +// Chrome is Webkit, but Webkit is also Safari. +if ( browser.chrome ) { + browser.webkit = true; +} else if ( browser.webkit ) { + browser.safari = true; +} + +//custom extensions, the original jquery didn't have these +browser.windows = /windows/.test(userAgent); +browser.mobile = /mobile/.test(userAgent) || /android/.test(userAgent); + +exports.browser = browser; \ No newline at end of file diff --git a/src/static/js/rjquery.js b/src/static/js/rjquery.js index 21af074b2..d9d1ed163 100644 --- a/src/static/js/rjquery.js +++ b/src/static/js/rjquery.js @@ -2,4 +2,9 @@ // Proviedes a require'able version of jQuery without leaking $ and jQuery; require('./jquery'); -exports.jQuery = exports.$ = $.noConflict(true); \ No newline at end of file +var jq = window.$.noConflict(true); + +//added the old browser recognition +jq.browser = require('./jquery_browser').browser; + +exports.jQuery = exports.$ = jq; \ No newline at end of file