
Removes a file of which we do not have licenses and makes new code.
Cause: About `jquery.firefox.keyfix.js`, We do not know licenses and do not have any agreements to use `it`. Also, `this` has many unnecessary codes. Solution: Deletes `jquery.firefox.keyfix.js`. Writes new codes such as `this`. Private-issue:1450
@bfa5dc597ce1575d6227de21ed2abb56398f884f
--- app/views/board/create.scala.html
+++ app/views/board/create.scala.html
... | ... | @@ -81,8 +81,6 @@ |
81 | 81 |
<link rel="stylesheet" type="text/css" media="screen" href="@routes.Assets.at("javascripts/lib/atjs/jquery.atwho.css")"> |
82 | 82 |
<script type="text/javascript" src="@routes.Assets.at("javascripts/lib/atjs/jquery.caret.min.js")"></script> |
83 | 83 |
<script type="text/javascript" src="@routes.Assets.at("javascripts/lib/atjs/jquery.atwho.js")"></script> |
84 |
-<script type="text/javascript" src="@routes.Assets.at("javascripts/lib/atjs/jquery.browser.js")"></script> |
|
85 |
-<script type="text/javascript" src="@routes.Assets.at("javascripts/lib/atjs/jquery.firefox.keyfix.js")"></script> |
|
86 | 84 |
<script type="text/javascript"> |
87 | 85 |
$(document).ready(function(){ |
88 | 86 |
$yobi.loadModule("board.Write", { |
--- app/views/board/edit.scala.html
+++ app/views/board/edit.scala.html
... | ... | @@ -82,8 +82,6 @@ |
82 | 82 |
<link rel="stylesheet" type="text/css" media="screen" href="@routes.Assets.at("javascripts/lib/atjs/jquery.atwho.css")"> |
83 | 83 |
<script type="text/javascript" src="@routes.Assets.at("javascripts/lib/atjs/jquery.caret.min.js")"></script> |
84 | 84 |
<script type="text/javascript" src="@routes.Assets.at("javascripts/lib/atjs/jquery.atwho.js")"></script> |
85 |
-<script type="text/javascript" src="@routes.Assets.at("javascripts/lib/atjs/jquery.browser.js")"></script> |
|
86 |
-<script type="text/javascript" src="@routes.Assets.at("javascripts/lib/atjs/jquery.firefox.keyfix.js")"></script> |
|
87 | 85 |
<script type="text/javascript"> |
88 | 86 |
$(document).ready(function(){ |
89 | 87 |
$yobi.loadModule("board.Write", { |
--- app/views/board/view.scala.html
+++ app/views/board/view.scala.html
... | ... | @@ -119,8 +119,6 @@ |
119 | 119 |
<link rel="stylesheet" type="text/css" media="screen" href="@routes.Assets.at("javascripts/lib/atjs/jquery.atwho.css")"> |
120 | 120 |
<script type="text/javascript" src="@routes.Assets.at("javascripts/lib/atjs/jquery.caret.min.js")"></script> |
121 | 121 |
<script type="text/javascript" src="@routes.Assets.at("javascripts/lib/atjs/jquery.atwho.js")"></script> |
122 |
-<script type="text/javascript" src="@routes.Assets.at("javascripts/lib/atjs/jquery.browser.js")"></script> |
|
123 |
-<script type="text/javascript" src="@routes.Assets.at("javascripts/lib/atjs/jquery.firefox.keyfix.js")"></script> |
|
124 | 122 |
<script type="text/javascript"> |
125 | 123 |
$(document).ready(function(){ |
126 | 124 |
$yobi.loadModule("board.View", { |
--- app/views/code/diff.scala.html
+++ app/views/code/diff.scala.html
... | ... | @@ -203,8 +203,6 @@ |
203 | 203 |
<link rel="stylesheet" type="text/css" media="screen" href="@routes.Assets.at("javascripts/lib/atjs/jquery.atwho.css")"> |
204 | 204 |
<script type="text/javascript" src="@routes.Assets.at("javascripts/lib/atjs/jquery.caret.min.js")"></script> |
205 | 205 |
<script type="text/javascript" src="@routes.Assets.at("javascripts/lib/atjs/jquery.atwho.js")"></script> |
206 |
-<script type="text/javascript" src="@routes.Assets.at("javascripts/lib/atjs/jquery.browser.js")"></script> |
|
207 |
-<script type="text/javascript" src="@routes.Assets.at("javascripts/lib/atjs/jquery.firefox.keyfix.js")"></script> |
|
208 | 206 |
<script type="text/javascript" src="@routes.Assets.at("javascripts/common/yobi.CodeCommentBlock.js")"></script> |
209 | 207 |
<script type="text/javascript" src="@routes.Assets.at("javascripts/common/yobi.CodeCommentBox.js")"></script> |
210 | 208 |
<script type="text/javascript" src="@routes.Assets.at("javascripts/lib/jquery/jquery-ui-1.10.4.custom.min.js")"></script> |
--- app/views/code/svnDiff.scala.html
+++ app/views/code/svnDiff.scala.html
... | ... | @@ -166,8 +166,6 @@ |
166 | 166 |
<link rel="stylesheet" type="text/css" media="screen" href="@routes.Assets.at("javascripts/lib/atjs/jquery.atwho.css")"> |
167 | 167 |
<script type="text/javascript" src="@routes.Assets.at("javascripts/lib/atjs/jquery.caret.min.js")"></script> |
168 | 168 |
<script type="text/javascript" src="@routes.Assets.at("javascripts/lib/atjs/jquery.atwho.js")"></script> |
169 |
-<script type="text/javascript" src="@routes.Assets.at("javascripts/lib/atjs/jquery.browser.js")"></script> |
|
170 |
-<script type="text/javascript" src="@routes.Assets.at("javascripts/lib/atjs/jquery.firefox.keyfix.js")"></script> |
|
171 | 169 |
<script type="text/javascript" src="@routes.Assets.at("javascripts/lib/diff.js")"></script> |
172 | 170 |
<script type="text/javascript"> |
173 | 171 |
$(document).ready(function(){ |
--- app/views/git/create.scala.html
+++ app/views/git/create.scala.html
... | ... | @@ -134,8 +134,6 @@ |
134 | 134 |
<link rel="stylesheet" type="text/css" media="screen" href="@routes.Assets.at("javascripts/lib/atjs/jquery.atwho.css")"> |
135 | 135 |
<script type="text/javascript" src="@routes.Assets.at("javascripts/lib/atjs/jquery.caret.min.js")"></script> |
136 | 136 |
<script type="text/javascript" src="@routes.Assets.at("javascripts/lib/atjs/jquery.atwho.js")"></script> |
137 |
-<script type="text/javascript" src="@routes.Assets.at("javascripts/lib/atjs/jquery.browser.js")"></script> |
|
138 |
-<script type="text/javascript" src="@routes.Assets.at("javascripts/lib/atjs/jquery.firefox.keyfix.js")"></script> |
|
139 | 137 |
<script type="text/javascript"> |
140 | 138 |
$(document).ready(function() { |
141 | 139 |
$yobi.loadModule("git.Write", { |
--- app/views/git/edit.scala.html
+++ app/views/git/edit.scala.html
... | ... | @@ -135,8 +135,6 @@ |
135 | 135 |
<link rel="stylesheet" type="text/css" media="screen" href="@routes.Assets.at("javascripts/lib/atjs/jquery.atwho.css")"> |
136 | 136 |
<script type="text/javascript" src="@routes.Assets.at("javascripts/lib/atjs/jquery.caret.min.js")"></script> |
137 | 137 |
<script type="text/javascript" src="@routes.Assets.at("javascripts/lib/atjs/jquery.atwho.js")"></script> |
138 |
-<script type="text/javascript" src="@routes.Assets.at("javascripts/lib/atjs/jquery.browser.js")"></script> |
|
139 |
-<script type="text/javascript" src="@routes.Assets.at("javascripts/lib/atjs/jquery.firefox.keyfix.js")"></script> |
|
140 | 138 |
<script type="text/javascript"> |
141 | 139 |
$(document).ready(function(){ |
142 | 140 |
$yobi.loadModule("git.Write"); |
--- app/views/git/view.scala.html
+++ app/views/git/view.scala.html
... | ... | @@ -130,8 +130,6 @@ |
130 | 130 |
<link rel="stylesheet" type="text/css" media="screen" href="@routes.Assets.at("javascripts/lib/atjs/jquery.atwho.css")"> |
131 | 131 |
<script type="text/javascript" src="@routes.Assets.at("javascripts/lib/atjs/jquery.caret.min.js")"></script> |
132 | 132 |
<script type="text/javascript" src="@routes.Assets.at("javascripts/lib/atjs/jquery.atwho.js")"></script> |
133 |
-<script type="text/javascript" src="@routes.Assets.at("javascripts/lib/atjs/jquery.browser.js")"></script> |
|
134 |
-<script type="text/javascript" src="@routes.Assets.at("javascripts/lib/atjs/jquery.firefox.keyfix.js")"></script> |
|
135 | 133 |
<script type="text/javascript" src="@routes.Assets.at("javascripts/lib/diff.js")"></script> |
136 | 134 |
<script type="text/javascript" src="@routes.Assets.at("javascripts/common/yobi.Interval.js")"></script> |
137 | 135 |
<script type="text/javascript" src="@routes.Assets.at("javascripts/common/yobi.CodeCommentBox.js")"></script> |
--- app/views/git/viewChanges.scala.html
+++ app/views/git/viewChanges.scala.html
... | ... | @@ -172,8 +172,6 @@ |
172 | 172 |
<link rel="stylesheet" type="text/css" media="screen" href="@routes.Assets.at("javascripts/lib/atjs/jquery.atwho.css")"> |
173 | 173 |
<script type="text/javascript" src="@routes.Assets.at("javascripts/lib/atjs/jquery.caret.min.js")"></script> |
174 | 174 |
<script type="text/javascript" src="@routes.Assets.at("javascripts/lib/atjs/jquery.atwho.js")"></script> |
175 |
-<script type="text/javascript" src="@routes.Assets.at("javascripts/lib/atjs/jquery.browser.js")"></script> |
|
176 |
-<script type="text/javascript" src="@routes.Assets.at("javascripts/lib/atjs/jquery.firefox.keyfix.js")"></script> |
|
177 | 175 |
<script type="text/javascript" src="@routes.Assets.at("javascripts/common/yobi.CodeCommentBox.js")"></script> |
178 | 176 |
<script type="text/javascript" src="@routes.Assets.at("javascripts/common/yobi.CodeCommentBlock.js")"></script> |
179 | 177 |
<script type="text/javascript" src="@routes.Assets.at("javascripts/lib/jquery/jquery-ui-1.10.4.custom.min.js")"></script> |
--- app/views/issue/create.scala.html
+++ app/views/issue/create.scala.html
... | ... | @@ -132,8 +132,6 @@ |
132 | 132 |
<link rel="stylesheet" type="text/css" media="screen" href="@routes.Assets.at("javascripts/lib/atjs/jquery.atwho.css")"> |
133 | 133 |
<script type="text/javascript" src="@routes.Assets.at("javascripts/lib/atjs/jquery.caret.min.js")"></script> |
134 | 134 |
<script type="text/javascript" src="@routes.Assets.at("javascripts/lib/atjs/jquery.atwho.js")"></script> |
135 |
-<script type="text/javascript" src="@routes.Assets.at("javascripts/lib/atjs/jquery.browser.js")"></script> |
|
136 |
-<script type="text/javascript" src="@routes.Assets.at("javascripts/lib/atjs/jquery.firefox.keyfix.js")"></script> |
|
137 | 135 |
<script type="text/javascript"> |
138 | 136 |
$(document).ready(function(){ |
139 | 137 |
// yobi.Label |
--- app/views/issue/edit.scala.html
+++ app/views/issue/edit.scala.html
... | ... | @@ -170,8 +170,6 @@ |
170 | 170 |
<link rel="stylesheet" type="text/css" media="screen" href="@routes.Assets.at("javascripts/lib/atjs/jquery.atwho.css")"> |
171 | 171 |
<script type="text/javascript" src="@routes.Assets.at("javascripts/lib/atjs/jquery.caret.min.js")"></script> |
172 | 172 |
<script type="text/javascript" src="@routes.Assets.at("javascripts/lib/atjs/jquery.atwho.js")"></script> |
173 |
-<script type="text/javascript" src="@routes.Assets.at("javascripts/lib/atjs/jquery.browser.js")"></script> |
|
174 |
-<script type="text/javascript" src="@routes.Assets.at("javascripts/lib/atjs/jquery.firefox.keyfix.js")"></script> |
|
175 | 173 |
<script type="text/javascript"> |
176 | 174 |
$(document).ready(function(){ |
177 | 175 |
// yobi.Label |
--- app/views/issue/view.scala.html
+++ app/views/issue/view.scala.html
... | ... | @@ -342,8 +342,6 @@ |
342 | 342 |
<link rel="stylesheet" type="text/css" media="screen" href="@routes.Assets.at("javascripts/lib/atjs/jquery.atwho.css")"> |
343 | 343 |
<script type="text/javascript" src="@routes.Assets.at("javascripts/lib/atjs/jquery.caret.min.js")"></script> |
344 | 344 |
<script type="text/javascript" src="@routes.Assets.at("javascripts/lib/atjs/jquery.atwho.js")"></script> |
345 |
-<script type="text/javascript" src="@routes.Assets.at("javascripts/lib/atjs/jquery.browser.js")"></script> |
|
346 |
-<script type="text/javascript" src="@routes.Assets.at("javascripts/lib/atjs/jquery.firefox.keyfix.js")"></script> |
|
347 | 345 |
<script type="text/javascript"> |
348 | 346 |
$(document).ready(function(){ |
349 | 347 |
// yobi.issue.View |
--- app/views/layout.scala.html
+++ app/views/layout.scala.html
... | ... | @@ -34,6 +34,7 @@ |
34 | 34 |
<link rel="stylesheet" type="text/css" media="all" href="@routes.Assets.at("stylesheets/yobi.css")"> |
35 | 35 |
|
36 | 36 |
<script type="text/javascript" src="@routes.Assets.at("javascripts/lib/jquery/jquery-1.9.0.js")"></script> |
37 |
+<script type="text/javascript" src="@routes.Assets.at("javascripts/lib/jquery/jquery.browser.js")"></script> |
|
37 | 38 |
<script type="text/javascript" src="@routes.Assets.at("javascripts/lib/jquery/jquery.pjax.js")"></script> |
38 | 39 |
<script type="text/javascript" src="@routes.Assets.at("javascripts/common/yobi.Common.js")"></script> |
39 | 40 |
</head> |
--- app/views/milestone/create.scala.html
+++ app/views/milestone/create.scala.html
... | ... | @@ -76,8 +76,6 @@ |
76 | 76 |
<link rel="stylesheet" type="text/css" media="screen" href="@routes.Assets.at("javascripts/lib/atjs/jquery.atwho.css")"> |
77 | 77 |
<script type="text/javascript" src="@routes.Assets.at("javascripts/lib/atjs/jquery.caret.min.js")"></script> |
78 | 78 |
<script type="text/javascript" src="@routes.Assets.at("javascripts/lib/atjs/jquery.atwho.js")"></script> |
79 |
-<script type="text/javascript" src="@routes.Assets.at("javascripts/lib/atjs/jquery.browser.js")"></script> |
|
80 |
-<script type="text/javascript" src="@routes.Assets.at("javascripts/lib/atjs/jquery.firefox.keyfix.js")"></script> |
|
81 | 79 |
<link rel="stylesheet" type="text/css" href="@routes.Assets.at("javascripts/lib/pikaday/pikaday.css")" /> |
82 | 80 |
<script type="text/javascript" src="@routes.Assets.at("javascripts/lib/moment-with-langs.min.js")"></script> |
83 | 81 |
<script type="text/javascript" src="@routes.Assets.at("javascripts/lib/pikaday/pikaday.js")"></script> |
--- app/views/milestone/edit.scala.html
+++ app/views/milestone/edit.scala.html
... | ... | @@ -80,8 +80,6 @@ |
80 | 80 |
<link rel="stylesheet" type="text/css" media="screen" href="@routes.Assets.at("javascripts/lib/atjs/jquery.atwho.css")"> |
81 | 81 |
<script type="text/javascript" src="@routes.Assets.at("javascripts/lib/atjs/jquery.caret.min.js")"></script> |
82 | 82 |
<script type="text/javascript" src="@routes.Assets.at("javascripts/lib/atjs/jquery.atwho.js")"></script> |
83 |
-<script type="text/javascript" src="@routes.Assets.at("javascripts/lib/atjs/jquery.browser.js")"></script> |
|
84 |
-<script type="text/javascript" src="@routes.Assets.at("javascripts/lib/atjs/jquery.firefox.keyfix.js")"></script> |
|
85 | 83 |
<link rel="stylesheet" type="text/css" href="@routes.Assets.at("javascripts/lib/pikaday/pikaday.css")" /> |
86 | 84 |
<script type="text/javascript" src="@routes.Assets.at("javascripts/lib/moment-with-langs.min.js")"></script> |
87 | 85 |
<script type="text/javascript" src="@routes.Assets.at("javascripts/lib/pikaday/pikaday.js")"></script> |
--- public/javascripts/common/yobi.Mention.js
+++ public/javascripts/common/yobi.Mention.js
... | ... | @@ -48,6 +48,8 @@ |
48 | 48 |
tpl: "<li data-value='@${loginid}'><img style='width:20px;height:20px;' src='${image}'> ${username} <small>${loginid}</small></li>", |
49 | 49 |
show_the_at: true |
50 | 50 |
} |
51 |
+ htVar.nKeyupEventGenerator = null; |
|
52 |
+ htVar.sMentionText = null; |
|
51 | 53 |
} |
52 | 54 |
|
53 | 55 |
/** |
... | ... | @@ -62,6 +64,10 @@ |
62 | 64 |
*/ |
63 | 65 |
function _attachEvent() { |
64 | 66 |
htElement.welTarget.on("keypress", _onKeyInput); |
67 |
+ if (jQuery.browser.mozilla){ |
|
68 |
+ htElement.welTarget.on("focus", _startKeyupEventGenerator); |
|
69 |
+ htElement.welTarget.on("blur", _stopKeyupEventGenerator); |
|
70 |
+ } |
|
65 | 71 |
} |
66 | 72 |
|
67 | 73 |
/** |
... | ... | @@ -80,6 +86,28 @@ |
80 | 86 |
} |
81 | 87 |
} |
82 | 88 |
|
89 |
+ function _startKeyupEventGenerator(){ |
|
90 |
+ if (htVar.nKeyupEventGenerator){ |
|
91 |
+ clearInterval(htVar.nKeyupEventGenerator); |
|
92 |
+ } |
|
93 |
+ |
|
94 |
+ htVar.nKeyupEventGenerator = setInterval( |
|
95 |
+ function(){ |
|
96 |
+ if (htVar.sMentionText != htElement.welTarget.val()){ |
|
97 |
+ htElement.welTarget.trigger("keyup"); |
|
98 |
+ htVar.sMentionText = htElement.welTarget.val(); |
|
99 |
+ } |
|
100 |
+ } |
|
101 |
+ ,100); |
|
102 |
+ } |
|
103 |
+ |
|
104 |
+ function _stopKeyupEventGenerator(){ |
|
105 |
+ if (htVar.nKeyupEventGenerator){ |
|
106 |
+ clearInterval(htVar.nKeyupEventGenerator); |
|
107 |
+ htVar.nKeyupEventGenerator = null; |
|
108 |
+ } |
|
109 |
+ } |
|
110 |
+ |
|
83 | 111 |
/** |
84 | 112 |
* Find Userlist |
85 | 113 |
*/ |
... | ... | @@ -94,9 +122,6 @@ |
94 | 122 |
|
95 | 123 |
function _onLoadUserList(aData){ |
96 | 124 |
htVar.atConfig.data = aData.result; |
97 |
- |
|
98 |
- // on-key event fix for FF on Korean input |
|
99 |
- var keyFix = new beta.fix(htVar.target); |
|
100 | 125 |
|
101 | 126 |
$inputor = htElement.welTarget |
102 | 127 |
.atwho(htVar.atConfig) |
--- public/javascripts/lib/atjs/jquery.firefox.keyfix.js
... | ... | @@ -1,61 +0,0 @@ |
1 | -/* | |
2 | - * on-key event fix for FF on Korean input | |
3 | - * fires 'keyup' event when contents of input form change | |
4 | - * requires jQuery 1.2.x | |
5 | - * example: var watchInput = keyFix(inputId); | |
6 | - * author: Hoya, hoya@betastudios.net http://hoya.tistory.com | |
7 | - */ | |
8 | - | |
9 | -if (typeof(beta) == "undefined") | |
10 | - _beta = beta = {}; | |
11 | - | |
12 | -if (typeof(_beta.fix) == "undefined") | |
13 | - _beta.fix = {}; | |
14 | -else | |
15 | - alert("keyfix is already set!"); | |
16 | - | |
17 | -if(typeof(window.beta.instances) == "undefined") | |
18 | - window.beta.instances = new Array(); | |
19 | - | |
20 | -_beta.fix = function(targetId) | |
21 | -{ | |
22 | - // this fix is only for mozilla browsers | |
23 | - if(jQuery.browser.mozilla == false) | |
24 | - return false; | |
25 | - | |
26 | - var thisClass = this; | |
27 | - this.keyEventCheck = null; | |
28 | - this.db = null; | |
29 | - this.targetId = targetId; | |
30 | - window.beta.instances[this.targetId] = this; | |
31 | - | |
32 | - var focusFunc = function() | |
33 | - { | |
34 | - if(!thisClass.keyEventCheck) thisClass.watchInput(); | |
35 | - }; | |
36 | - | |
37 | - var blurFunc = function() | |
38 | - { | |
39 | - if(thisClass.keyEventCheck) | |
40 | - { | |
41 | - window.clearInterval(thisClass.keyEventCheck); | |
42 | - thisClass.keyEventCheck = null; | |
43 | - } | |
44 | - }; | |
45 | - | |
46 | - $("#" + this.targetId).bind("focus", focusFunc); | |
47 | - $("#" + this.targetId).bind("blur", blurFunc); | |
48 | -}; | |
49 | - | |
50 | -_beta.fix.prototype.watchInput = function() | |
51 | -{ | |
52 | - if(this.db != $("#" + this.targetId).val()) | |
53 | - { | |
54 | - // trigger event | |
55 | - $("#" + this.targetId).trigger('keyup'); | |
56 | - } | |
57 | - this.db = $("#" + this.targetId).val(); | |
58 | - | |
59 | - if(this.keyEventCheck) window.clearInterval(this.keyEventCheck); | |
60 | - this.keyEventCheck = window.setInterval("window.beta.instances['" + this.targetId + "'].watchInput()", 100); | |
61 | -}; |
+++ public/javascripts/lib/jquery/jquery.browser.js
... | ... | @@ -0,0 +1,113 @@ |
1 | +/*! | |
2 | + * jQuery Browser Plugin v0.0.6 | |
3 | + * https://github.com/gabceb/jquery-browser-plugin | |
4 | + * | |
5 | + * Original jquery-browser code Copyright 2005, 2013 jQuery Foundation, Inc. and other contributors | |
6 | + * http://jquery.org/license | |
7 | + * | |
8 | + * Modifications Copyright 2013 Gabriel Cebrian | |
9 | + * https://github.com/gabceb | |
10 | + * | |
11 | + * Released under the MIT license | |
12 | + * | |
13 | + * Date: 2013-07-29T17:23:27-07:00 | |
14 | + */ | |
15 | + | |
16 | +(function( jQuery, window, undefined ) { | |
17 | + "use strict"; | |
18 | + | |
19 | + var matched, browser; | |
20 | + | |
21 | + jQuery.uaMatch = function( ua ) { | |
22 | + ua = ua.toLowerCase(); | |
23 | + | |
24 | + var match = /(opr)[\/]([\w.]+)/.exec( ua ) || | |
25 | + /(chrome)[ \/]([\w.]+)/.exec( ua ) || | |
26 | + /(version)[ \/]([\w.]+).*(safari)[ \/]([\w.]+)/.exec( ua ) || | |
27 | + /(webkit)[ \/]([\w.]+)/.exec( ua ) || | |
28 | + /(opera)(?:.*version|)[ \/]([\w.]+)/.exec( ua ) || | |
29 | + /(msie) ([\w.]+)/.exec( ua ) || | |
30 | + ua.indexOf("trident") >= 0 && /(rv)(?::| )([\w.]+)/.exec( ua ) || | |
31 | + ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec( ua ) || | |
32 | + []; | |
33 | + | |
34 | + var platform_match = /(ipad)/.exec( ua ) || | |
35 | + /(iphone)/.exec( ua ) || | |
36 | + /(android)/.exec( ua ) || | |
37 | + /(windows phone)/.exec( ua ) || | |
38 | + /(win)/.exec( ua ) || | |
39 | + /(mac)/.exec( ua ) || | |
40 | + /(linux)/.exec( ua ) || | |
41 | + /(cros)/i.exec( ua ) || | |
42 | + []; | |
43 | + | |
44 | + return { | |
45 | + browser: match[ 3 ] || match[ 1 ] || "", | |
46 | + version: match[ 2 ] || "0", | |
47 | + platform: platform_match[ 0 ] || "" | |
48 | + }; | |
49 | + }; | |
50 | + | |
51 | + matched = jQuery.uaMatch( window.navigator.userAgent ); | |
52 | + browser = {}; | |
53 | + | |
54 | + if ( matched.browser ) { | |
55 | + browser[ matched.browser ] = true; | |
56 | + browser.version = matched.version; | |
57 | + browser.versionNumber = parseInt(matched.version); | |
58 | + } | |
59 | + | |
60 | + if ( matched.platform ) { | |
61 | + browser[ matched.platform ] = true; | |
62 | + } | |
63 | + | |
64 | + // These are all considered mobile platforms, meaning they run a mobile browser | |
65 | + if ( browser.android || browser.ipad || browser.iphone || browser[ "windows phone" ] ) { | |
66 | + browser.mobile = true; | |
67 | + } | |
68 | + | |
69 | + // These are all considered desktop platforms, meaning they run a desktop browser | |
70 | + if ( browser.cros || browser.mac || browser.linux || browser.win ) { | |
71 | + browser.desktop = true; | |
72 | + } | |
73 | + | |
74 | + // Chrome, Opera 15+ and Safari are webkit based browsers | |
75 | + if ( browser.chrome || browser.opr || browser.safari ) { | |
76 | + browser.webkit = true; | |
77 | + } | |
78 | + | |
79 | + // IE11 has a new token so we will assign it msie to avoid breaking changes | |
80 | + if ( browser.rv ) | |
81 | + { | |
82 | + var ie = "msie"; | |
83 | + | |
84 | + matched.browser = ie; | |
85 | + browser[ie] = true; | |
86 | + } | |
87 | + | |
88 | + // Opera 15+ are identified as opr | |
89 | + if ( browser.opr ) | |
90 | + { | |
91 | + var opera = "opera"; | |
92 | + | |
93 | + matched.browser = opera; | |
94 | + browser[opera] = true; | |
95 | + } | |
96 | + | |
97 | + // Stock Android browsers are marked as Safari on Android. | |
98 | + if ( browser.safari && browser.android ) | |
99 | + { | |
100 | + var android = "android"; | |
101 | + | |
102 | + matched.browser = android; | |
103 | + browser[android] = true; | |
104 | + } | |
105 | + | |
106 | + // Assign the name and platform variable | |
107 | + browser.name = matched.browser; | |
108 | + browser.platform = matched.platform; | |
109 | + | |
110 | + | |
111 | + jQuery.browser = browser; | |
112 | +})( jQuery, window ); | |
113 | + |
Add a comment
Delete comment
Once you delete this comment, you won't be able to recover it. Are you sure you want to delete this comment?