jQuery $.browser가 감가상각되었습니까?
jQuery의 $.browser가 감가상각되었다고 믿는 제가 맞는지 누가 알려주실 수 있나요?
기존 구현이 계속 작동할 수 있습니까?그렇지 않다면, 실행하기 쉬운 대안이 있습니까?
두번째 질문
기존 구현이 계속 작동할 수 있습니까?그렇지 않다면, 실행하기 쉬운 대안이 있습니까?
대답은 그렇다입니다. 하지만 약간의 일이 없으면 안됩니다.
$.browser는 이전 버전의 jQuery에 포함된 공식 플러그인이므로 다른 플러그인과 마찬가지로 간단히 복사하여 프로젝트에 통합하거나 jQuery 릴리스의 끝에 추가할 수 있습니다.
당신이 사용을 원할 경우를 대비하여 코드를 추출하였습니다.
// Limit scope pollution from any deprecated API
(function() {
var matched, browser;
// Use of jQuery.browser is frowned upon.
// More details: http://api.jquery.com/jQuery.browser
// jQuery.uaMatch maintained for back-compat
jQuery.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"
};
};
matched = jQuery.uaMatch( navigator.userAgent );
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;
}
jQuery.browser = browser;
jQuery.sub = function() {
function jQuerySub( selector, context ) {
return new jQuerySub.fn.init( selector, context );
}
jQuery.extend( true, jQuerySub, this );
jQuerySub.superclass = this;
jQuerySub.fn = jQuerySub.prototype = this();
jQuerySub.fn.constructor = jQuerySub;
jQuerySub.sub = this.sub;
jQuerySub.fn.init = function init( selector, context ) {
if ( context && context instanceof jQuery && !(context instanceof jQuerySub) ) {
context = jQuerySub( context );
}
return jQuery.fn.init.call( this, selector, context, rootjQuerySub );
};
jQuerySub.fn.init.prototype = jQuerySub.fn;
var rootjQuerySub = jQuerySub(document);
return jQuerySub;
};
})();
누가 왜 감가 상각 플러그인이 필요하냐고 묻는다면 다음과 같은 답변을 준비했습니다.
무엇보다 먼저 정답은 호환성입니다.jQuery는 플러그인 기반이기 때문에, 일부 개발자들은 $.browser를 사용하고 $.browser가 포함되지 않은 최신 버전의 jQuery와 함께 사용하지 않는 플러그인을 사용하기로 선택했습니다.
jQuery는 개발자들이 $.browser와 같은 감가 상각된 종속성을 사용했는지 여부를 탐지하기 위해 만든 마이그레이션 플러그인을 릴리스했습니다.
비록 이것이 개발자들이 그들의 플러그인을 패치하는 것을 도와주었지만. jQuery는 $.browser를 완전히 떨어뜨렸기 때문에 당신의 개발자들이 위를 패치하거나 통합할 때까지 위 수정이 아마도 유일한 해결책일 것입니다.
정보: jQuery.브라우저
설명서에서:
$.browser 속성은 jQuery 1.3에서 더 이상 사용되지 않으며 향후 jQuery 릴리스에서 팀 지원 플러그인으로 기능이 이동될 수 있습니다.
예, 이는 사용되지 않지만 기존 구현은 계속 작동합니다.기능이 제거되면 플러그인을 사용하여 쉽게 액세스할 수 있습니다.
대안이 있는지에 관해서는...대답은 "그렇다, 아마도" 입니다.브라우저 검색보다 기능 검색을 사용하는 것이 훨씬 더 좋습니다. 브라우저가 아니라 필요한 실제 기능을 검색하는 것입니다.브라우저마다 다른 가장 중요한 기능들이 그것으로 감지됩니다.
2013년 2월 16일 업데이트:jQuery 1.9에서 이 기능은 삭제되었습니다(docs).그것을 사용하지 않는 것이 훨씬 낫습니다.정말로, 정말로 이 기능을 사용해야 하는 경우 jQuery Migrate 플러그인을 사용하여 복원할 수 있습니다.
여기서는 기능 가용성을 기반으로 브라우저를 감지하는 대안적인 방법을 제시합니다.
IE만 탐지하려면 다음을 사용할 수 있습니다.
if(/*@cc_on!@*/false || typeof ScriptEngineMajorVersion === "function")
{
//You are using IE>=4 (unreliable for IE11)
}
else
{
//You are using other browser
}
가장 인기 있는 브라우저를 검색하려면:
if(/*@cc_on!@*/false || typeof ScriptEngineMajorVersion === "function")
{
//You are using IE >= 4 (unreliable for IE11!!!)
}
else if(window.chrome)
{
//You are using Chrome or Chromium
}
else if(window.opera)
{
//You are using Opera >= 9.2
}
else if('MozBoxSizing' in document.body.style)
{
//You are using Firefox or Firefox based >= 3.2
}
else if({}.toString.call(window.HTMLElement).indexOf('Constructor')+1)
{
//You are using Safari >= 3.1
}
else
{
//Unknown
}
이 더 컴파일을 지원하지 은 되었습니다(The/*@cc_on!@*/false
속임수).
당신은 IE11이 자바스크립트 조건부 컴파일을 제거했는지 확인할 수 있습니다.이 주제에 대한 자세한 내용을 확인합니다.
저는 그들이 제시한 제안을 이용했습니다.
다를 할 수도 .typeof document.body.style.msTransform == "string"
아니면document.body.style.msTransform !== window.undefined
또는 심지어'msTransform' in document.body.style
.
업데이트됨! 2015년 3월 24일 (시간 이하 스크롤)
쓸쓸한 언젠가의 대답이 정말 맞아요, 저는 단지 이 소식을 덧붙이려고 생각했을 뿐입니다.나는 얼마전에 바닐라 JS에서 브라우저를 얻는 방법을 만들었고 결국 교체하기 위해 곡선을 그렸습니다.jQuery.browser
j Query의 최신 버전에서.의 어떤 합니다 jQuery lib한 기능을 제공합니다.jQuery.browser
다른 작은 특징들 뿐만 아니라 물체.
새로운 확장 버전!
최신 브라우저의 경우 훨씬 더 철저합니다.또한 모바일 테스트에서 90% 이상의 정확도!모든 모바일 브라우저에서 테스트한 것은 아니지만 새로운 기능이 추가되었기 때문에 100%라고 말하지는 않겠습니다.$.browser.mobile
부울/끈 모바일이 아니라면 그렇지 은 다음과 같습니다모바일이 아니면 거짓이고, 그렇지 않으면 모바일 장치 또는 브라우저의 문자열 이름이 됩니다(최선의 추측은 다음과 같습니다).Android, RIM Tablet, iPod 등).
() 에 완전히 하기 때문에 일부 수 userAgent
매다
JS 미니드
/* quick & easy cut & paste */
;;(function($){if(!$.browser&&1.9<=parseFloat($.fn.jquery)){var a={browser:void 0,version:void 0,mobile:!1};navigator&&navigator.userAgent&&(a.ua=navigator.userAgent,a.webkit=/WebKit/i.test(a.ua),a.browserArray="MSIE Chrome Opera Kindle Silk BlackBerry PlayBook Android Safari Mozilla Nokia".split(" "),/Sony[^ ]*/i.test(a.ua)?a.mobile="Sony":/RIM Tablet/i.test(a.ua)?a.mobile="RIM Tablet":/BlackBerry/i.test(a.ua)?a.mobile="BlackBerry":/iPhone/i.test(a.ua)?a.mobile="iPhone":/iPad/i.test(a.ua)?a.mobile="iPad":/iPod/i.test(a.ua)?a.mobile="iPod":/Opera Mini/i.test(a.ua)?a.mobile="Opera Mini":/IEMobile/i.test(a.ua)?a.mobile="IEMobile":/BB[0-9]{1,}; Touch/i.test(a.ua)?a.mobile="BlackBerry":/Nokia/i.test(a.ua)?a.mobile="Nokia":/Android/i.test(a.ua)&&(a.mobile="Android"),/MSIE|Trident/i.test(a.ua)?(a.browser="MSIE",a.version=/MSIE/i.test(navigator.userAgent)&&0<parseFloat(a.ua.split("MSIE")[1].replace(/[^0-9\.]/g,""))?parseFloat(a.ua.split("MSIE")[1].replace(/[^0-9\.]/g,"")):"Edge",/Trident/i.test(a.ua)&&/rv:([0-9]{1,}[\.0-9]{0,})/.test(a.ua)&&(a.version=parseFloat(a.ua.match(/rv:([0-9]{1,}[\.0-9]{0,})/)[1].replace(/[^0-9\.]/g,"")))):/Chrome/.test(a.ua)?(a.browser="Chrome",a.version=parseFloat(a.ua.split("Chrome/")[1].split("Safari")[0].replace(/[^0-9\.]/g,""))):/Opera/.test(a.ua)?(a.browser="Opera",a.version=parseFloat(a.ua.split("Version/")[1].replace(/[^0-9\.]/g,""))):/Kindle|Silk|KFTT|KFOT|KFJWA|KFJWI|KFSOWI|KFTHWA|KFTHWI|KFAPWA|KFAPWI/i.test(a.ua)?(a.mobile="Kindle",/Silk/i.test(a.ua)?(a.browser="Silk",a.version=parseFloat(a.ua.split("Silk/")[1].split("Safari")[0].replace(/[^0-9\.]/g,""))):/Kindle/i.test(a.ua)&&/Version/i.test(a.ua)&&(a.browser="Kindle",a.version=parseFloat(a.ua.split("Version/")[1].split("Safari")[0].replace(/[^0-9\.]/g,"")))):/BlackBerry/.test(a.ua)?(a.browser="BlackBerry",a.version=parseFloat(a.ua.split("/")[1].replace(/[^0-9\.]/g,""))):/PlayBook/.test(a.ua)?(a.browser="PlayBook",a.version=parseFloat(a.ua.split("Version/")[1].split("Safari")[0].replace(/[^0-9\.]/g,""))):/BB[0-9]{1,}; Touch/.test(a.ua)?(a.browser="Blackberry",a.version=parseFloat(a.ua.split("Version/")[1].split("Safari")[0].replace(/[^0-9\.]/g,""))):/Android/.test(a.ua)?(a.browser="Android",a.version=parseFloat(a.ua.split("Version/")[1].split("Safari")[0].replace(/[^0-9\.]/g,""))):/Safari/.test(a.ua)?(a.browser="Safari",a.version=parseFloat(a.ua.split("Version/")[1].split("Safari")[0].replace(/[^0-9\.]/g,""))):/Firefox/.test(a.ua)?(a.browser="Mozilla",a.version=parseFloat(a.ua.split("Firefox/")[1].replace(/[^0-9\.]/g,""))):/Nokia/.test(a.ua)&&(a.browser="Nokia",a.version=parseFloat(a.ua.split("Browser")[1].replace(/[^0-9\.]/g,""))));if(a.browser)for(var b in a.browserArray)a[a.browserArray[b].toLowerCase()]=a.browser==a.browserArray[b];$.extend(!0,$.browser={},a)}})(jQuery);
/* quick & easy cut & paste */
jsFiddle "jQuery 플러그인:브라우저 가져오기(Extended Alt Edition)"
/** jQuery.browser
* @author J.D. McKinstry (2014)
* @description Made to replicate older jQuery.browser command in jQuery versions 1.9+
* @see http://jsfiddle.net/SpYk3/wsqfbe4s/
*
* @extends jQuery
* @namespace jQuery.browser
* @example jQuery.browser.browser == 'browserNameInLowerCase'
* @example jQuery.browser.version
* @example jQuery.browser.mobile @returns BOOLEAN
* @example jQuery.browser['browserNameInLowerCase']
* @example jQuery.browser.chrome @returns BOOLEAN
* @example jQuery.browser.safari @returns BOOLEAN
* @example jQuery.browser.opera @returns BOOLEAN
* @example jQuery.browser.msie @returns BOOLEAN
* @example jQuery.browser.mozilla @returns BOOLEAN
* @example jQuery.browser.webkit @returns BOOLEAN
* @example jQuery.browser.ua @returns navigator.userAgent String
*/
;;(function($){if(!$.browser&&1.9<=parseFloat($.fn.jquery)){var a={browser:void 0,version:void 0,mobile:!1};navigator&&navigator.userAgent&&(a.ua=navigator.userAgent,a.webkit=/WebKit/i.test(a.ua),a.browserArray="MSIE Chrome Opera Kindle Silk BlackBerry PlayBook Android Safari Mozilla Nokia".split(" "),/Sony[^ ]*/i.test(a.ua)?a.mobile="Sony":/RIM Tablet/i.test(a.ua)?a.mobile="RIM Tablet":/BlackBerry/i.test(a.ua)?a.mobile="BlackBerry":/iPhone/i.test(a.ua)?a.mobile="iPhone":/iPad/i.test(a.ua)?a.mobile="iPad":/iPod/i.test(a.ua)?a.mobile="iPod":/Opera Mini/i.test(a.ua)?a.mobile="Opera Mini":/IEMobile/i.test(a.ua)?a.mobile="IEMobile":/BB[0-9]{1,}; Touch/i.test(a.ua)?a.mobile="BlackBerry":/Nokia/i.test(a.ua)?a.mobile="Nokia":/Android/i.test(a.ua)&&(a.mobile="Android"),/MSIE|Trident/i.test(a.ua)?(a.browser="MSIE",a.version=/MSIE/i.test(navigator.userAgent)&&0<parseFloat(a.ua.split("MSIE")[1].replace(/[^0-9\.]/g,""))?parseFloat(a.ua.split("MSIE")[1].replace(/[^0-9\.]/g,"")):"Edge",/Trident/i.test(a.ua)&&/rv:([0-9]{1,}[\.0-9]{0,})/.test(a.ua)&&(a.version=parseFloat(a.ua.match(/rv:([0-9]{1,}[\.0-9]{0,})/)[1].replace(/[^0-9\.]/g,"")))):/Chrome/.test(a.ua)?(a.browser="Chrome",a.version=parseFloat(a.ua.split("Chrome/")[1].split("Safari")[0].replace(/[^0-9\.]/g,""))):/Opera/.test(a.ua)?(a.browser="Opera",a.version=parseFloat(a.ua.split("Version/")[1].replace(/[^0-9\.]/g,""))):/Kindle|Silk|KFTT|KFOT|KFJWA|KFJWI|KFSOWI|KFTHWA|KFTHWI|KFAPWA|KFAPWI/i.test(a.ua)?(a.mobile="Kindle",/Silk/i.test(a.ua)?(a.browser="Silk",a.version=parseFloat(a.ua.split("Silk/")[1].split("Safari")[0].replace(/[^0-9\.]/g,""))):/Kindle/i.test(a.ua)&&/Version/i.test(a.ua)&&(a.browser="Kindle",a.version=parseFloat(a.ua.split("Version/")[1].split("Safari")[0].replace(/[^0-9\.]/g,"")))):/BlackBerry/.test(a.ua)?(a.browser="BlackBerry",a.version=parseFloat(a.ua.split("/")[1].replace(/[^0-9\.]/g,""))):/PlayBook/.test(a.ua)?(a.browser="PlayBook",a.version=parseFloat(a.ua.split("Version/")[1].split("Safari")[0].replace(/[^0-9\.]/g,""))):/BB[0-9]{1,}; Touch/.test(a.ua)?(a.browser="Blackberry",a.version=parseFloat(a.ua.split("Version/")[1].split("Safari")[0].replace(/[^0-9\.]/g,""))):/Android/.test(a.ua)?(a.browser="Android",a.version=parseFloat(a.ua.split("Version/")[1].split("Safari")[0].replace(/[^0-9\.]/g,""))):/Safari/.test(a.ua)?(a.browser="Safari",a.version=parseFloat(a.ua.split("Version/")[1].split("Safari")[0].replace(/[^0-9\.]/g,""))):/Firefox/.test(a.ua)?(a.browser="Mozilla",a.version=parseFloat(a.ua.split("Firefox/")[1].replace(/[^0-9\.]/g,""))):/Nokia/.test(a.ua)&&(a.browser="Nokia",a.version=parseFloat(a.ua.split("Browser")[1].replace(/[^0-9\.]/g,""))));if(a.browser)for(var b in a.browserArray)a[a.browserArray[b].toLowerCase()]=a.browser==a.browserArray[b];$.extend(!0,$.browser={},a)}})(jQuery);
/* - - - - - - - - - - - - - - - - - - - */
var b = $.browser;
console.log($.browser); // see console, working example of jQuery Plugin
console.log($.browser.chrome);
for (var x in b) {
if (x != 'init')
$('<tr />').append(
$('<th />', { text: x }),
$('<td />', { text: b[x] })
).appendTo($('table'));
}
table { border-collapse: collapse; }
th, td { border: 1px solid; padding: .25em .5em; vertical-align: top; }
th { text-align: right; }
textarea { height: 500px; width: 100%; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<table></table>
"$.browser 속성은 jQuery 1.3에서 더 이상 사용되지 않으며 향후 jQuery 릴리스에서 팀 지원 플러그인으로 기능이 이동될 수 있습니다."
출처: http://api.jquery.com/jQuery.browser/
http://api.jquery.com/jQuery.browser/ 의 공식 문서에서 다음을 참조하십시오.
이 속성은 jQuery 1.9에서 제거되었으며 jQuery.migrate 플러그인을 통해서만 사용할 수 있습니다.
예를 들어 다음과 같이 사용할 수 있습니다.jquery-migrate-1.4.1.js
에 향후 r를 할 수 수 있습니다.$에서 $다.
언급URL : https://stackoverflow.com/questions/9638247/is-jquery-browser-deprecated
'programing' 카테고리의 다른 글
multicolumn unique key mysql insert (0) | 2023.10.15 |
---|---|
공백을 무시하는 쿼리 (0) | 2023.10.15 |
특정 커밋샤를 위해 GitHub에서 .zip을 다운로드하는 방법? (0) | 2023.10.15 |
스프링부츠 + 스웨거 + 커스텀 스웨거 -ui.html (0) | 2023.10.15 |
javascript의 고유 (0) | 2023.10.15 |