ගූගල් හි සත්කාරක jQuery භාවිතා කිරීමට හොඳම ක්‍රමය, නමුත් ගූගල් හි මගේ සත්කාරක පුස්තකාලයට ආපසු යන්න


1018

ගූගල් හි (හෝ වෙනත් ගූගල් සත්කාරක ලිබ්) සත්කාරක jQuery පැටවීමට උත්සාහ කිරීමට හොඳ ක්‍රමයක් වන්නේ කුමක්ද , නමුත් ගූගල් උත්සාහය අසාර්ථක වුවහොත් මගේ jQuery පිටපත පටවන්න.

මම කියන්නේ නැහැ ගූගල් දෝෂ සහිතයි කියලා. ගූගල් පිටපත අවහිර කර ඇති අවස්ථා තිබේ (පෙනෙන විදිහට ඉරානයේ).

මම ටයිමරයක් සකසා jQuery වස්තුව පරීක්ෂා කරන්නේද?

පිටපත් දෙකම පැමිණීමේ අන්තරාය කුමක්ද?

"ගූගල් එකක් භාවිතා කරන්න" හෝ "ඔබේම දෑ භාවිතා කරන්න" වැනි පිළිතුරු සැබවින්ම සොයන්නේ නැත. මට ඒ තර්ක තේරෙනවා. පරිශීලකයා ගූගල් අනුවාදය හැඹිලිගත කිරීමට ඉඩ ඇති බව ද මම තේරුම් ගතිමි. මම පොදුවේ වලාකුළ සඳහා වන පසුබෑම ගැන සිතමි.


සංස්කරණය කරන්න: මෙම කොටස එකතු කරන ලදි ...

අජැක්ස් පුස්තකාල පූරණය කිරීම සඳහා ගූගල්.ලොඩ් භාවිතා කිරීමට ගූගල් යෝජනා කරන අතර, එය සිදු වූ විට එය නැවත කැඳවීමක් සිදු කරයි, මෙම ගැටලුව අනුක්‍රමික කිරීම සඳහා යතුර එයදැයි මම කල්පනා කරමි.

මම දන්නවා ඒක ටිකක් පිස්සු වගේ. මම උත්සාහ කරන්නේ එය විශ්වාසදායක ආකාරයකින් කළ හැකිද නැද්ද යන්න සොයා ගැනීමටයි.


යාවත්කාලීන කිරීම: jQuery දැන් මයික්‍රොසොෆ්ට් හි සීඩීඑන් හි සත්කාරකත්වය දරයි.

http://www.asp.net/ajax/cdn/


9
ඇත්ත වශයෙන්ම පළමු පිළිතුර වූයේ "ගූගල් සත්කාරක අනුවාදය භාවිතා නොකරන්න" යන්නයි. :-)
නොස්රෙඩ්නා

7
ඇත්ත වශයෙන්ම එසේ වූයේ ඔබට බැරෑරුම් වෙබ් අඩවියක් සත්කාරකත්වය සැපයීමට අවශ්‍ය නම්, ඔබේ ලිපිගොනු සත්කාර කරන වෙනත් අයෙකු මත ඔබ විශ්වාසය නොතබන බැවිනි.
බ්‍රයන් මිග්ලියෝරිසි

6
Ry බ්‍රයන් මිග්ලියෝරිසි, මම හිතන්නේ ට්විටර් එතරම් බැරෑරුම් නොවේ ද? නමුත් මම පිළිගන්නවා ගූගල් සමඟ ඔවුන්ගේ ගැටලු මාසයකට පෙර ගූගල් පහළට ගිය විට මෙන්.
අයෝනු ජී. ස්ටැන්

19
ජේඑස් ලිබ් සත්කාරකත්වය සඳහා ගූගල් භාවිතා කිරීම හෝ නොකිරීමේ සුදුසුකම් වටී, නමුත් එය තවත් ත්‍රෙඩ් කිහිපයකින් සාකච්ඡා කර ඇත. පැටවීමේ ප්‍රමාදය පිළිබඳ ජේඑස් පසුබෑම පිළිබඳ තාක්ෂණික පිළිතුරු මම සොයමින් සිටියෙමි.
නොස්රෙඩ්නා

2
Oe ජෝ චුන්ග්: එය පරිශීලක පද්ධතියේ හැඹිලිගත වීමට ඉඩ ඇත, පිටු පැටවීම වේගවත් කරයි. මට කලාප පළල ඉතිරි කරයි. ගූගල් හි සීඩීඑන් භාවිතා කරයි. ආදිය
නොස්රෙඩ්නා

Answers:


813

ඔබට එය මේ ආකාරයෙන් සාක්ෂාත් කරගත හැකිය:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js"></script>

<script>
       window.jQuery || document.write('<script src="/path/to/your/jquery"><\/script>');
</script>

මෙය ඔබගේ පිටුවේ <head>තිබිය යුතු අතර <body>දෝෂ මඟහරවා ගැනීම සඳහා ඕනෑම jQuery සූදානම් සිදුවීම් හසුරුවන්නන් සිටිය යුතුය (එය මෝඩ-සාක්ෂි නොවේ!).

ගූගල් සත්කාරක jQuery භාවිතා නොකිරීමට තවත් එක් හේතුවක් නම් සමහර රටවල ගූගල්ගේ ඩොමේන් නාමය තහනම් කර තිබීමයි.


35
ජාවාස්ක්‍රිප්ට් බාගැනීම් අවහිර කිරීම (සමමුහුර්ත) දැනටමත් නොවේද? ද්විත්ව පිටපත් කිරීමේ ගැටලුව ගැටලුවක් නොවන බව මට පෙනේ.
මැට් ෂර්මන්

68
මැට් ෂර්මන් පැවසූ පරිදි ජාවාස්ක්‍රිප්ට් බාගැනීම් දැනටමත් සමමුහුර්ත විය යුතුය. එසේ නොමැති නම්, අඩක් බාගත කර ඇති පුස්තකාලයක් මත රඳා පවතින පේළිගත පිටපතක් ක්‍රියාත්මක කිරීමට පිටුව උත්සාහ කළහොත් හෝ පුස්තකාලය සම්පූර්ණයෙන් බාගත කර ක්‍රියාත්මක නොකර පුස්තකාල දිගුවක් ක්‍රියාත්මක කළ හොත් බොහෝ ගැටලු ඇති වේ. පිටු අවසානයේ ජාවාස්ක්‍රිප්ට් තැබීම යාහූ වයි ස්ලෝ නැවත නිර්දේශ කිරීමට එයද එක් හේතුවකි; එමඟින් වෙනත් පිටු අංග බාගත කිරීම අවහිර නොකරයි (මෝස්තර සහ රූප ඇතුළුව). අවම වශයෙන්, අනුක්‍රමිකව සිදුවීමට බ්‍රව්සරයට ක්‍රියාත්මක කිරීම ප්‍රමාද කිරීමට සිදුවේ.
gapple

42
වලංගුකාරක උමතුවෙන් කුඩා විසඳුමක්: ජාවාස්ක්‍රිප්ට් හි '</' නූලට අවසර නැත, මන්ද එය ස්ක්‍රිප්ට් ටැගයේ අවසානය ලෙස වැරදියට අර්ථකථනය කළ හැකි බැවිනි (SGML කෙටි ටැග් අංකනය). ඒ වෙනුවට '<' + '/ script>' කරන්න. චියර්ස්,
බෝල්ඩ්වින්

8
මෙම උදාහරණය ක්‍රියා නොකරනු ඇත. 1) ගූගල් අජැක්ස් පුස්තකාලය නොමැති නම් එය අසමත් වීමට පෙර කල් ඉකුත්විය යුතුය. මෙය ටික වේලාවක් ගතවනු ඇත. මගේ පරිගණකය ජාලයෙන් විසන්ධි කිරීමේ මගේ පරීක්ෂණයේදී එය උත්සාහ කර අත්හදා බැලූ අතර කාලය ඉක්මවා ගියේ නැත. 2) (! JQuery) දෝෂයක් ඇති වුවහොත් jQuery නිර්වචනය කර නොමැති නිසා ජාවාස්ක්‍රිප්ට් එය කුමක් කළ යුතු දැයි නොදනී.
RedWolves

32
JQuery පටවා ඇත්දැයි පරීක්ෂා කිරීම සඳහා, (! Window.jQuery) හොඳින් ක්‍රියාත්මක වන අතර එය කෙටි කර ඇත්නම් යතුරු ලියනය පරීක්ෂා කරන්න.
J Zrn Zaefferer

335

මෙය කිරීමට පහසුම හා පිරිසිදුම ක්‍රමය:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script>window.jQuery || document.write('<script src="path/to/your/jquery"><\/script>')</script>

1
ppjpp සඳහා XHTML 1.0සහHTML 4.01
බෙන්ජමින්

5
මිනිස්සු දිගින් දිගටම මගෙන් ඉල්ලා සිටින්නේ එම type="text/javascript"කොටස් ඉවත් කරන ලෙසයි , එබැවින් පැරණි බ්‍රව්සර් සඳහා html ලියන පුද්ගලයින්ට, ඔබ දැන් එය එකතු කළ යුතු බව සලකන්න.
බෙන්ජමින් ආර්එච්

6
En බෙන්ජමින් ආර්එච්: type="text/javascript"පැරණි බ්‍රව්සර්වල ද අනවශ්‍ය විය, මන්ද ඒවා සියල්ලම ජාවාස්ක්‍රිප්ට් වෙත පෙරනිමි. සැබවින්ම පැරණි බ්‍රව්සර් languageගුණාංගය දෙස බැලීය ; නමුත් එසේ වුවද, ගුණාංගය අස්ථානගත වී ඇත්නම්, ජාවාස්ක්‍රිප්ට් පෙරනිමිය විය.
මාර්ටිජන්

1
Art මාටිජන් නමුත් දිලිසෙන වලංගු කිරීමේ ලාංඡනයට මම කැමතියි :)
බෙන්ජමින්

3
Ro ට්‍රෝජන් සම්පූර්ණයෙන්ම හැකි, ඇමතුම් ගොඩගසන්න. මෙම අවස්ථාවේදී ඔබ නව සම්බන්ධතා ධාරකයන් විවෘත කරන බව සලකන්න, එබැවින් HTTP නල මාර්ගගත කිරීම වේගවත් වනු ඇත. ... <script src="//cdn1.com/jquery.js"></script> <script>window.jQuery || document.write('<script src="//cdn2.com/jquery.js"><\/script>')</script> <script>window.jQuery || document.write('<script src="local/jquery.js"><\/script>')</script>
ටොම් මැකෙන්සි

76

මෙය මට වැඩ කරන බව පෙනේ:

<html>
<head>
<script type="text/javascript" src="http://www.google.com/jsapi"></script>
<script type="text/javascript">
// has the google object loaded?
if (window.google && window.google.load) {
    google.load("jquery", "1.3.2");
} else {
    document.write('<script type="text/javascript" src="http://joecrawford.com/jquery-1.3.2.min.js"><\/script>');
}
window.onload = function() {
    $('#test').css({'border':'2px solid #f00'});
};
</script>
</head>
<body>
    <p id="test">hello jQuery</p>
</body>
</html>

එය වැඩ කරන ආකාරය භාවිතා කිරීමට googleඉල්ලා ඇති වස්තුව http://www.google.com/jsapi මතට පැටවුම් windowවස්තුව. එම වස්තුව නොමැති නම්, අපි උපකල්පනය කරන්නේ ගූගල් වෙත ප්‍රවේශ වීම අසාර්ථක බවයි. එය එසේ නම්, අපි භාවිතා කරමින් දේශීය පිටපතක් පටවන්නෙමු document.write. (මෙම අවස්ථාවේදී මම මගේම සේවාදායකයක් භාවිතා කරමි, කරුණාකර මෙය පරීක්ෂා කිරීම සඳහා ඔබේම දෑ භාවිතා කරන්න).

මම පැමිණ සිටිනවාදැයි පරීක්ෂා window.google.loadකරමි - typeofදේවල් වස්තූන් හෝ කාර්යයන් සුදුසු දැයි බැලීමට මට පරීක්‍ෂණයක් කළ හැකිය. නමුත් මම හිතන්නේ මෙය උපක්‍රමයක් කරයි.

මෙන්න මම පැටවීමේ තර්කනය පමණි, මන්ද මම පරීක්ෂා කරමින් සිටි මුළු HTML පිටුවම පළ කිරීමෙන් පසුව කේත ඉස්මතු කිරීම අසාර්ථක වන බව පෙනේ:

if (window.google && window.google.load) {
    google.load("jquery", "1.3.2");
} else {
    document.write('<script type="text/javascript" src="http://joecrawford.com/jquery-1.3.2.min.js"><\/script>');
}

මා පැවසිය යුතු වුවත්, මෙය ඔබේ වෙබ් අඩවි නරඹන්නන් ගැන සැලකිලිමත් වන්නේ නම් ඔබ ගූගල් අජැක්ස් පුස්තකාල ඒපීඅයි සමඟ කිසිසේත් නොගැලපෙන බව මට විශ්වාස නැත .

විනෝදජනක කාරණය : විවිධ සංස්කරණ වලදී මේ සඳහා උත්සාහක දිනුම් කැච් බ්ලොක් එකක් භාවිතා කිරීමට මම මුලින් උත්සාහ කළ නමුත් මේ තරම් පිරිසිදු සංයෝජනයක් සොයාගත නොහැකි විය. මෙම අදහසේ වෙනත් ක්‍රියාත්මක කිරීම් හුදෙක් අභ්‍යාසයක් ලෙස දැකීමට මා උනන්දු වෙමි.


1
රොනී යෝජනා කළ පරිදි ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js කෙලින්ම පූරණය කරනවාට වඩා මෙම තත්වය තුළ google.load භාවිතා කිරීමේ වාසිය කුමක්ද? මම හිතන්නේ එය පැටවීම කෙලින්ම ඉවත් කළ පුස්තකාලවලද ගැටලු ඇති කරයි (ගූගල් JQuery 1.3.2 හි සේවය නතර කළහොත්). තවද, www.google.com/jsapi ලබා ගැනීමෙන් පසුව, විශේෂයෙන් jsapi හැඹිලියෙන් පටවා ඇති විට, රොනීගේ අනුවාදය ජාල ගැටළු හඳුනා ගනී. සහතික වීමට යමෙකුට google.load ඇමතුම භාවිතා කිරීමට අවශ්‍ය විය හැකිය (නැතහොත් if (..) හි google.load ඇතුළත් කිරීමට යම් ප්‍රතිලාභ අගයක් තිබිය හැක).
අර්ජන්

යමෙකු ගූගල්.කොම් හි සිටිනවාදැයි පරීක්ෂා කරන්නේ නම්, කෙනෙකුට ජාල ඇමතුමක් ලබා ගත හැකිය, නැතහොත් කෙනෙකුට “ගේට්ටු මුරකරු” වස්තුව තිබේදැයි පරීක්ෂා කළ හැකිය. මම කරන්නේ ගූගල් වස්තුව සහ එහි "පැටවුම්" ක්‍රියාකාරිත්වය පරීක්ෂා කිරීමයි. මේ දෙකම අසමත් වුවහොත්, ගූගල් නැත, මට දේශීය අනුවාදය අවශ්‍යය. රොනීගේ අනුවාදය ඇත්ත වශයෙන්ම www.google.com/jsapi URL එක නොසලකා හරියි, එබැවින් එය ලබා ගත හැකි යැයි ඔබ දක්වන්නේ මන්දැයි මට විශ්වාස නැත.
artlung

අවසානයේදී, අවශ්‍ය වන්නේ jquery පුස්තකාලය පටවා තිබීමයි. ඕනෑම ගූගල් පුස්තකාලයක් අවශ්‍යතාවයක් නොවේ. රොනීගේ පිළිතුරෙන්, ගූගල් (හෝ හැඹිලිය) වෙතින් පූරණය සාර්ථක වූයේ දැයි යමෙක් දනී. නමුත් "if (window.google && window.google.load)" සඳහා වන ඔබගේ චෙක්පතෙහි, jquery පුස්තකාලය තවමත් පටවා නොමැත. Jquery පුස්තකාලයේ සත්‍ය පැටවීම වලංගු නොවේද?
අර්ජන්

අහ්, මම ව්‍යාකූලත්වයට හේතු වූ ආකාරය මට පෙනේ. "රොනීගේ අනුවාදය ජාල ගැටලු www.google.com/jsapi ලබා ගත් පසු" වඩා හොඳින් කියවිය යුතුය: "www.google.com/jsapi ලබා ගත් පසු ඔබේ අනුවාදය ජාල ගැටලු නොපෙනේ".
අර්ජන්

2
අපි මෑතකදී අපගේ jQuery සත්කාරක සමාගම ලෙස ගූගල් භාවිතා කිරීමට මාරු වී සිටිමු; අවහිර කළ පරිශීලකයින්ගෙන් අපට කිසියම් දෝෂ වාර්තාවක් ලැබුනේ නම්, අපගේ සේවාදායක කේතය නැවත ප්‍රතිනිර්මාණය කිරීම සඳහා මම ඔබේ පිළිතුරේ ප්‍රභේදයක් භාවිතා කරමි. හොඳ පිළිතුරක්!
ජැරෝඩ් ඩික්සන්

30

ඔබේ වෙබ් අඩවියේ modernizr.js කාවැදී ඇත්නම්, ඔබට ඔබගේ ස්ක්‍රිප්ට් අසමමුහුර්තව පැටවීම සඳහා සාදන ලද yepnope.js භාවිතා කළ හැකිය - අනෙක් ඒවා අතර jQuery (පසුබෑමක් සහිතව).

Modernizr.load([{
    load : '//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js'
},{
    test : window.jQuery,
    nope : 'path/to/local/jquery-1.7.2.min.js',
    both : ['myscript.js', 'another-script.js'],
    complete : function () {
        MyApp.init();
    }
}]);

මෙය Google-cdn වෙතින් jQuery පටවනු ලැබේ. JQuery සාර්ථකව පටවා ඇත්දැයි පසුව පරීක්ෂා කරනු ලැබේ. එසේ නොවේ නම් ("නැත"), දේශීය අනුවාදය පටවනු ලැබේ. ඔබේ පුද්ගලික ස්ක්‍රිප්ට් ද පටවා ඇත - "දෙකම" පෙන්නුම් කරන්නේ, පරීක්ෂණ ක්‍රියාවලියෙහි ප්‍රති result ලයෙන් බර පැටවීමේ ක්‍රියාවලිය ස්වාධීනව ප්‍රේරණය වන බවයි.

සියලුම පැටවුම් ක්‍රියාවලි සම්පුර්ණ වූ විට, 'MyApp.init' හි ශ්‍රිතයක් ක්‍රියාත්මක වේ.

අසමමුහුර්ත ස්ක්‍රිප්ට් පැටවීමේ ක්‍රමයට මම පෞද්ගලිකව කැමැත්තෙමි. වෙබ් අඩවියක් තැනීමේදී නවීනකරණය විසින් සපයන ලද විශේෂාංග පරීක්ෂණ මත මම විශ්වාසය තබන බැවින්, එය කෙසේ හෝ වෙබ් අඩවියට ඇතුළත් කර ඇත. එබැවින් ඇත්ත වශයෙන්ම පොදු කාර්යයක් නොමැත.


2
මම හිතන්නේ ඔබට ප්‍රශ්නයේ කාරණය මග හැරී ඇත - ඔබ සීඩීඑන් එකකින් මුවර්නිස් ස්ක්‍රිප්ට් පූරණය කරන්නේ කෙසේද?
ජෝර්ජ් ෆිලිපකොස්

2
CDN වෙතින් Modernizr පූරණය කිරීම මට නිර්දේශ කළ නොහැක. Modernizr.com වෙතින් කුඩාම අභිරුචි ගොඩනැගීම ලබා ගත යුතුය.
එමානුවෙල් ක්ලූජ්

2
එබැවින් මෙම විකල්පය +16 ලබා ගනී, 500/200 + හා සසඳන විට අනෙක් විකල්ප ලබා ගනී. නමුත් මෙය ඉතා හොඳයි. නූතනකරණය මත යැපීම නිසා එය ජනප්‍රිය නොවේ ද? මම කෙසේ හෝ අපේ වෙබ් අඩවියේ මොඩර්නයිසර් භාවිතා කරමි, එබැවින් මෙය අනෙක් පිළිතුරු වලට වඩා හොඳ නම්, යමෙකුට මට දන්වන්න පුළුවන්ද? මම JQuery වෙත තරමක් අලුත් බැවින් පැහැදිලි කිරීම අගය කරනු ලැබේ.
redfox05

2
පිළිතුර ලැබෙන කාලය තුළ මෙය ඉතා හොඳ විකල්පයක් වූ නමුත් 2015 වන විට yepnope.jsඑය අවලංගු කර ඇත. stackoverflow.com/questions/33986561/…
Obmerk Kronen

මෙම ප්‍රශ්නය මෙන් ම ගැටලු විසඳීම සඳහා නූතනකරණය නිර්මාණය කරන ලදි. +1
කාලෝස් ක්විජානෝ

21

මෙහි විශිෂ්ට විසඳුම් කිහිපයක් ඇත, නමුත් දේශීය ගොනුව සම්බන්ධයෙන් තවත් පියවරක් ඉදිරියට ගෙන යාමට මම කැමතියි.

ගූගල් අසමත් වූ අවස්ථාවක, එය දේශීය ප්‍රභවයක් පූරණය කළ යුතු නමුත් සමහර විට සේවාදායකයේ භෞතික ගොනුවක් හොඳම විකල්පය නොවේ. මම මෙය ගෙන එන්නේ මම දැනට එකම විසඳුම ක්‍රියාත්මක කරන නිසා, මට අවශ්‍ය වන්නේ දත්ත ප්‍රභවයකින් ජනනය වන දේශීය ගොනුවකට නැවත වැටීමට පමණි.

මේ සඳහා මගේ හේතු වන්නේ ගූගල් එදිරිව මා පටවන දේ සහ දේශීය සේවාදායකයේ මා සතුව ඇති දේ පිළිබඳව සොයා බැලීමේදී මට යම්කිසි මනසක් තිබීමයි. මට අනුවාදයන් වෙනස් කිරීමට අවශ්‍ය නම්, මගේ දේශීය පිටපත මම ගූගල් වෙතින් පූරණය කිරීමට උත්සාහ කරන දේ සමඟ සමමුහුර්තව තබා ගැනීමට මට අවශ්‍යය. බොහෝ සංවර්ධකයින් සිටින පරිසරයක, හොඳම ප්‍රවේශය වනුයේ මෙම ක්‍රියාවලිය ස්වයංක්‍රීය කිරීමයි, එවිට සියල්ලන්ටම කළ යුතුව ඇත්තේ වින්‍යාස ගොනුවක අනුවාද අංකයක් වෙනස් කිරීමයි.

න්‍යාය අනුව ක්‍රියාත්මක විය යුතු මගේ යෝජිත විසඳුම මෙන්න:

  • යෙදුම් වින්‍යාස ගොනුවක, මම කරුණු 3 ක් ගබඩා කරමි: පුස්තකාලය සඳහා නිරපේක්ෂ URL, ජාවාස්ක්‍රිප්ට් API සඳහා වන URL සහ අනුවාද අංකය
  • පුස්තකාලයේ ගොනු අන්තර්ගතයන් ලබා ගන්නා පන්තියක් ලියන්න (යෙදුම් වින්‍යාසයෙන් URL ලබා ගනී), නම සහ අනුවාද අංකය සමඟ එය මගේ දත්ත ප්‍රභවයේ ගබඩා කරයි.
  • අනුවාද අංකය වෙනස් වන තුරු මගේ දේශීය ගොනුව db වෙතින් ඉවතට ගෙන ගොනුව හැඹිලිගත කරන හසුරුවන්නෙකු ලියන්න.
  • එය වෙනස් වුවහොත් (මගේ යෙදුම් වින්‍යාසය තුළ), මගේ පන්තිය අනුවාද අංකය මත පදනම්ව ගොනු අන්තර්ගතයන් ඇදගෙන, එය මගේ දත්ත ප්‍රභවයේ නව වාර්තාවක් ලෙස සුරකිනු ඇත, එවිට හසුරුවන්නා නව අනුවාදය ලබා දෙයි.

න්‍යාය අනුව, මගේ කේතය නිසියාකාරව ලියා ඇත්නම්, මට කළ යුතුව ඇත්තේ මගේ යෙදුම් වින්‍යාසයේ අනුවාද අංකය වෙනස් කිරීම පමණි. ඔබට ස්වයංක්‍රීයව ආපසු හැරවීමේ විසඳුමක් ඇති අතර ඔබේ සේවාදායකයේ භෞතික ලිපිගොනු නඩත්තු කිරීමට අවශ්‍ය නැත.

හැමෝම සිතන්නේ කුමක්ද? සමහර විට මෙය අතිරික්තයක් විය හැකි නමුත් එය ඔබේ අජැක්ස් පුස්තකාල නඩත්තු කිරීමේ අලංකාර ක්‍රමයක් විය හැකිය.

Acorn


ඔබ සියලු වැඩ කරන්නේ නම්, හුදෙක් jQuery සඳහා, මම එය overkill කියන්නේ කියලා. කෙසේ වෙතත්, ඔබගේ යෙදුමේ වෙනත් කොටස් සඳහා ඔබ දැනටමත් එම සංරචක කිහිපයක් තිබේ නම් (උදා: ඔබ දැනටමත් ඩී.බී. වෙතින් ස්ක්‍රිප්ට් පූරණය කරන්නේ නම්) එය ඉතා හොඳ පෙනුමක්.
මයිකල් හරන්

1
+1 පරිපූර්ණ හා නව්‍යකරණය සඳහා, නමුත් ප්‍රතිලාභය කාලය හා සංකීර්ණ බව යුක්ති සහගත කරයි.
කෝරි හවුස්

20
if (typeof jQuery == 'undefined') {
// or if ( ! window.jQuery)
// or if ( ! 'jQuery' in window)
// or if ( ! window.hasOwnProperty('jQuery'))    

  var script = document.createElement('script');
  script.type = 'text/javascript';
  script.src = '/libs/jquery.js';

  var scriptHook = document.getElementsByTagName('script')[0];
  scriptHook.parentNode.insertBefore(script, scriptHook);

}

සීඩීඑන් වෙතින් ගූගල් පිටපත ඇතුළත් කිරීමට ඔබ උත්සාහ කළ පසු.

HTML5 හි, ඔබට typeගුණාංගය සැකසීමට අවශ්‍ය නොවේ .

ඔබට ද භාවිතා කළ හැකිය ...

window.jQuery || document.write('<script src="/libs/jquery.js"><\/script>');

2
+1 වඩා පිරිසිදු පෙනුමක්. 'නිර්වචනය නොකල' පසු එහි කුඩා වැසීමේ වරහන් දෙකේ සිට මට පැහැදිලි කළ නොහැකි කුඩා අක්ෂර වින්‍යාසයක් ඇත
නවීන්

1
පළමු විකල්පය ක්‍රෝම් අනතුරු ඇඟවීම මග හැරේ[Violation] Avoid using document.write().
බොබ් ස්ටේන්

පළමු විකල්පය, අවාසනාවකට මෙන්, සමමුහුර්තව පටවන බවක් නොපෙනේ . දෙවන විකල්පය එසේ කරයි.
බොබ් ස්ටයින්

10

ඔබේ දේශීය ගොනුව අවසාන පියවරක් ලෙස භාවිතා කිරීමට ඔබට අවශ්‍ය විය හැකිය.

මේ වන විට jQuery හි සීඩීඑන් https සඳහා සහය නොදක්වන බව පෙනේ. එය එසේ වූයේ නම් පළමුව එතැනින් පැටවීමට ඔබට අවශ්‍ය විය හැකිය.

ඉතින් මෙන්න අනුක්‍රමය: ගූගල් සීඩීඑන් => මයික්‍රොසොෆ්ට් සීඩීඑන් => ඔබේ දේශීය පිටපත.

<!-- load jQuery from Google's CDN -->
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> 
<!-- fallback to Microsoft's Ajax CDN -->
<script> window.jQuery || document.write('<script src="//ajax.aspnetcdn.com/ajax/jQuery/jquery-1.8.3.min.js">\x3C/script>')</script> 
<!-- fallback to local file -->
<script> window.jQuery || document.write('<script src="Assets/jquery-1.8.3.min.js">\x3C/script>')</script> 

සැබවින්ම එකකට වඩා පසුබැසීමේ අවශ්‍යතාවයක් තිබේද? දෙදෙනාම නොබැඳි නම් ඔබේ වෙබ් අඩවිය බැලීමට පෙර විනාඩියකට වැඩි කාලයක් බලා සිටිනු ඇත
ජෝර්ජ් ෆිලිපකොස්

1
ස්ක්‍රිප්ට් එකක් පූරණය වීමට අපොහොසත් වීමට මිනිත්තු 1 ක් ගත නොවේ.
එඩ්වඩ් ඔලමිසන්

@ භූ 1701 සහ එඩ්වඩ්, ඇත්ත වශයෙන්ම තුනෙන් එකක් අවශ්‍ය නොවේ. එක් පසුබෑමක් තවමත් විශ්වාසදායක බව ඔප්පු වී නොමැත. ගූගල් ඒපීඅයි අක්‍රීය නම්, පළමු උත්සාහය කිසිසේත් අසාර්ථක වන බවට කිසිදු සහතිකයක් මා දැක නැත. මෙහි සඳහන් කර ඇති පරිදි, සීඩීඑන් කිසි විටෙකත් පූරණය කිරීමට අපොහොසත් වූ, පිටුව කවදාවත් විදැහුම්කරණයෙන් තොරව තබා ගත් සිද්ධියක් මම අත්විඳිමි: stevesouders.com/blog/2013/03/18/http-archive-jquery/…
hexalys

6

කොන්දේසි සහිතව නවතම / උරුමය jQuery අනුවාදය සහ පසුබෑම පූරණය කරන්න:

<!--[if lt IE 9]>
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
    <script>window.jQuery || document.write('<script src="/public/vendor/jquery-legacy/dist/jquery.min.js">\x3C/script>')</script>
<![endif]-->
<!--[if gte IE 9]><!-->
    <script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
    <script>window.jQuery || document.write('<script src="/public/vendor/jquery/dist/jquery.min.js">\x3C/script>')</script>
<!--<![endif]-->

මෙය හරස් බ්‍රව්සරයට අනුකූල නොවේ.
ජොෂ් හබ්දාස්

ජොෂ්, ඔව්.
neiker

5
  • පියවර 1: jQuery පැටවීමට අපොහොසත් වූවාද? ( jQueryවිචල්යය පරීක්ෂා කරන්න )

ජාවාස්ක්‍රිප්ට් හි නිර්වචනය නොකළ විචල්‍යයක් පරීක්ෂා කරන්නේ කෙසේද

  • පියවර 2: ගතිකව ආනයනය කරන්න (උපස්ථ) ජාවාස්ක්‍රිප්ට් ගොනුව

ජාවාස්ක්‍රිප්ට් ගොනුවක් වෙනත් ජාවාස්ක්‍රිප්ට් ගොනුවකට ඇතුළත් කරන්නේ කෙසේද?



4

මෙන්න මේ පිළිබඳ විශාල පැහැදිලි කිරීමක්!

පැටවීමේ ප්‍රමාදයන් සහ කල් ඉකුත්වීම් ද ක්‍රියාත්මක කරයි!

http://happyworm.com/blog/2010/01/28/a-simple-and-robust-cdn-failover-for-jquery-14-in-one-line/


සබැඳි පමණක් පිළිතුරු ප්‍රයෝජනවත් නොවන අතර අඩු ගුණාත්මක බව සලකනු ලැබේ. මූලාශ්‍රයට ඇත්ත වශයෙන්ම ආරෝපණය කරමින් අදාළ බිටු ඔබේ පිළිතුරට පිටපත් කිරීම සලකා බලන්න.
random_user_name

alecale_b ඔබ විහිළු කරනවාද? මෙම පිළිතුර අවුරුදු 7 කට වඩා පැරණි බැවින් එවැනි ප්‍රකාශයක් අනවශ්‍යය.
ස්ටුවර්ට්.ස්ක්ලිනාර්

ඔව්, එය පැරණි පිළිතුරකි. ඔවුන්ගේ යෝජනාව වලංගු වුවද. හුදෙක් වෙනත් තැනක සබැඳි වන පිළිතුරු මකාදැමීමේ අපේක්ෂකයින් වේ. වැඩිදුර පා er කයා
රොබ්

මම සම්පුර්ණයෙන්ම එකඟ වෙමි, මම යෝජනා සමඟ මධ්‍යස්ථව සිටිමි - නමුත් එය වසර 7 කට පසුව පැවසීමෙන් පලක් නැත. එය නවීකරණය කළ යුතුව තිබුණේ මීට වසර 7 කට පෙර මිස අවුරුදු 7 කට පසුව නොවේ.
ස්ටුවර්ට්.ස්ක්ලිනාර්

1
@ ස්ටුවර්ට් ස්ක්ලිනාර් - මම මීට වසර 7 කට පෙර එය දුටුවා නම්, මට තිබුනේ :) මම මෙහි යම් පර්යේෂණයක් කරමින් සිටින බවත්, මෙය පළමු වරට දුටු බවත් මට පෙනී ගියේය. ඔබව කලකිරීමට කණගාටුයි - SO හි අපගේ කාර්යයන් වෙබ් අඩවියේ භාරකරුවන් විය යුතු යැයි මම සිතමි, සමහර විට එයින් අදහස් කරන්නේ අදහස් දැක්වීම, සංස්කරණය කිරීම හෝ පැරණි ප්‍රශ්න හෝ පිළිතුරු වැඩිදියුණු කිරීමයි ...
random_user_name

4

ASP.NET MVC 5 භාවිතා කරන පුද්ගලයින් සඳහා, jquery සඳහා CDN සක්‍රීය කිරීම සඳහා මෙම කේතය ඔබේ BundleConfig.cs හි එක් කරන්න:

bundles.UseCdn = true;
Bundle jqueryBundle = new ScriptBundle("~/bundles/jquery", "//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js").Include("~/Scripts/jquery-{version}.js");
jqueryBundle.CdnFallbackExpression = "window.jQuery";
bundles.Add(jqueryBundle);

4

යාවත්කාලීන කිරීම:
මෙම පිළිතුර වැරදිය. සත්‍ය පැහැදිලි කිරීම සඳහා කරුණාකර අදහස් බලන්න.


ඔබගෙන් බොහෝ දෙනාගේ ප්‍රශ්නයට පිළිතුරු ලැබී ඇත, නමුත් අවසාන කොටස සඳහා:

පිටපත් දෙකම පැමිණීමේ අන්තරාය කුමක්ද?

කිසිවක් ඇත්ත වශයෙන්ම නැත. ඔබ කලාප පළල නාස්ති කරයි, දෙවන නිෂ් less ල පිටපතක් බාගත කිරීම සඳහා මිලි තත්පර කිහිපයක් එකතු කළ හැකිය, නමුත් ඒවා දෙකම පැමිණියහොත් සැබෑ හානියක් නැත. ඇත්ත වශයෙන්ම, ඉහත සඳහන් කළ ශිල්පීය ක්‍රම භාවිතා කිරීමෙන් ඔබ මෙය වළක්වා ගත යුතුය.


5
ඇත්ත වශයෙන්ම, jQuery දෙවරක් පැටවීම බොහෝ ගැටලු ඇති කළ හැකි බව මෙම ප්‍රශ්නයට අනුව .
ShadowCat7

ඇයි ඔබ එය ඔබ විසින්ම පරීක්‍ෂා කර jquery පුස්තකාලය දෙවරක් පටවන්නේ නැත්තේ? එවිට පිළිතුර අනාවරණය වේ.
luke_mclachlan

හරියටම එය එතරම් වැරදියි ඇයි? Dlow ShadowCat7 මගින් ඇතිවන ගැටළු පිළිබඳව ඔබට වඩාත් නිශ්චිත විය හැකිද? ඔබ සම්බන්ධ කළ ප්‍රශ්නයේ පැහැදිලිව හඳුනාගෙන ඇති එකම ගැටළුව "කලින් පටවා ඇති සියලුම ප්ලගීන ඉවත් කිරීමයි." නමුත් එකම jQuery ගොනුව දෙවරක් පසුපසට පැටවීම සඳහා එය අදාළ නොවිය යුතුය, නේද? මම අසන්නේ දේශීය පසුබෑමට මෙහි ඇති වෙනත් විසඳුම් ඉතා සංවර වී ඇති නිසා සහ document.write සමහර ස්ථානවල නපුරක් ලෙස අපකීර්තියට පත්ව ඇති බැවිනි .
බොබ් ස්ටයින්

2

මම සාරාංශයක් සාදා ඇති අතර එය දැනටමත් පටවා නොමැති නම් ගතිකව පැටවිය යුතු අතර, ප්‍රභවය අසමත් වුවහොත් එය පසුබෑමකට ලක් වේ (බොහෝ පිළිතුරු වලින් එකට බැඳී ඇත): https://gist.github.com/tigerhawkvok/9673154

සාරාංශය යාවත්කාලීනව තබා ගැනීමට මම අදහස් කරමි, නමුත් මෙම පිළිතුර නොවේ, එය වටින දේ සඳහා!

/* See https://gist.github.com/tigerhawkvok/9673154 for the latest version */
function cascadeJQLoad(i) { // Use alternate CDNs where appropriate to load jQuery
    if (typeof(i) != "number") i = 0;
    // the actual paths to your jQuery CDNs
    var jq_paths = [
        "ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js",
        "ajax.aspnetcdn.com/ajax/jQuery/jquery-2.1.0.min.js"
    ];
    // Paths to your libraries that require jQuery
    var dependent_libraries = [
        "js/c.js"
    ];
    if (window.jQuery === undefined && i < jq_paths.length) {
        i++;
        loadJQ(jq_paths[i], i, dependent_libraries);
    }
    if (window.jQuery === undefined && i == jq_paths.length) {
        // jQuery failed to load
        // Insert your handler here
    }
}

/***
 * You shouldn't have to modify anything below here
 ***/

function loadJQ(jq_path, i, libs) { //load jQuery if it isn't already
    if (typeof(jq_path) == "undefined") return false;
    if (typeof(i) != "number") i = 1;
    var loadNextJQ = function() {
        var src = 'https:' == location.protocol ? 'https' : 'http';
        var script_url = src + '://' + jq_path;
        loadJS(script_url, function() {
            if (window.jQuery === undefined) cascadeJQLoad(i);
        });
    }
    window.onload = function() {
        if (window.jQuery === undefined) loadNextJQ();
        else {
            // Load libraries that rely on jQuery
            if (typeof(libs) == "object") {
                $.each(libs, function() {
                    loadJS(this.toString());
                });
            }
        }
    }
    if (i > 0) loadNextJQ();
}

function loadJS(src, callback) {
    var s = document.createElement('script');
    s.src = src;
    s.async = true;
    s.onreadystatechange = s.onload = function() {
        var state = s.readyState;
        try {
            if (!callback.done && (!state || /loaded|complete/.test(state))) {
                callback.done = true;
                callback();
            }
        } catch (e) {
            // do nothing, no callback function passed
        }
    };
    s.onerror = function() {
        try {
            if (!callback.done) {
                callback.done = true;
                callback();
            }
        } catch (e) {
            // do nothing, no callback function passed
        }
    }
    document.getElementsByTagName('head')[0].appendChild(s);
}

/*
 * The part that actually calls above
 */

if (window.readyState) { //older microsoft browsers
    window.onreadystatechange = function() {
        if (this.readyState == 'complete' || this.readyState == 'loaded') {
            cascadeJQLoad();
        }
    }
} else { //modern browsers
    cascadeJQLoad();
}

2

ගූගල් සත්කාරක jQuery

  • ඔබ පැරණි බ්‍රව්සර් ගැන සැලකිලිමත් වන්නේ නම්, මූලික වශයෙන් IE9 ට පෙර IE හි අනුවාදයන් නම්, මෙය වඩාත් පුළුල් ලෙස අනුකූල වන jQuery අනුවාදය වේ
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
  • ඔබ පැරණි අයිඊ ගැන සැලකිල්ලක් නොදක්වන්නේ නම්, මෙය කුඩා හා වේගවත් ය:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>

උපස්ථ / ආපසු හැරවීමේ සැලැස්ම!

  • කෙසේ වෙතත්, ගූගල් සීඩීඑන් අසමත් වුවහොත් (විය නොහැක්කකි) හෝ ඔබේ පරිශීලකයින් ඉරානයට හෝ සමහර විට චීනයට වැනි (තරමක් වැඩි ඉඩක්) ඔබේ වෙබ් අඩවියට පිවිසෙන ස්ථානයක අවහිර වී ඇති අවස්ථාවකදී ඔබ දේශීයව පසුබෑමක් භාවිතා කළ යුතුය.
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script>if (!window.jQuery) { document.write('<script src="/path/to/your/jquery"><\/script>'); }
</script>

යොමුව: http://websitespeedoptimizations.com/ContentDeliveryNetworkPost.aspx


සටහන අනාරක්ෂිත ප්‍රොටෝකෝල හරහා ස්ක්‍රිප්ට් පැටවීම XSS ප්‍රහාරක දෛශිකයක් විවෘත කරයි.
ජොෂ් හබ්දාස්

2

අන්තිම <සිට \ x3C නූලෙන් ගැලවිය යුතු යැයි මම සිතමි. බ්‍රව්සරය දුටු විට, මෙය ස්ක්‍රිප්ට් බ්ලොක් එකේ අවසානය ලෙස සලකයි (HTML විග්‍රහකයාට ජාවාස්ක්‍රිප්ට් ගැන කිසිම අදහසක් නැති නිසා, එය නූලක දිස්වන දෙයක් සහ ස්ක්‍රිප්ට් අවසන් කිරීමට අදහස් කරන දෙයක් අතර වෙනස හඳුනාගත නොහැක. මූලද්‍රව්‍යය). එබැවින් HTML පිටුවක් තුළ ඇති ජාවාස්ක්‍රිප්ට් හි වචනාර්ථයෙන් පෙනී සිටීම (හොඳම අවස්ථාවේ දී) දෝෂ ඇති කරයි, සහ (නරකම අවස්ථාවෙහිදී) විශාල ආරක්ෂක වළල්ලක් වනු ඇත.

<script src="https://ajax.aspnetcdn.com/ajax/jquery/jquery-2.0.0.min.js"></script>
<script>window.jQuery || document.write('<script src="js/jquery-2.0.0.min.js">\x3C/script>')</script>

2
if (typeof jQuery == 'undefined')) { ...

හෝ

if(!window.jQuery){

සීඩීඑන් අනුවාදය පටවා නොමැති නම් ක්‍රියා නොකරනු ඇත, මන්ද බ්‍රව්සරය මෙම තත්වය හරහා ක්‍රියාත්මක වන අතර ඒ අතරතුර තවමත් jQuery අවශ්‍ය වන ඉතිරි ජාවාස්ක්‍රිප්ට් බාගත කරයි. විසඳුම වූයේ එම කොන්දේසිය හරහා ස්ක්‍රිප්ට් පැටවීමයි.

    <script src="http://WRONGPATH.code.jquery.com/jquery-1.4.2.min.js" type="text/javascript"></script><!--  WRONGPATH for test-->
  <script type="text/javascript">
  function loadCDN_or_local(){
    if(!window.jQuery){//jQuery not loaded, take a local copy of jQuery and then my scripts
      var scripts=['local_copy_jquery.js','my_javascripts.js'];
      for(var i=0;i<scripts.length;i++){
      scri=document.getElementsByTagName('head')[0].appendChild(document.createElement('script'));
      scri.type='text/javascript';
      scri.src=scripts[i];
    }
  }
  else{// jQuery loaded can load my scripts
    var s=document.getElementsByTagName('head')[0].appendChild(document.createElement('script'));
    s.type='text/javascript';
    s.src='my_javascripts.js';
  }
  }
  window.onload=function(){loadCDN_or_local();};
  </script>

ගූගල් ක්‍රෝම් හි ස්ක්‍රිප්ට් පරික්ෂා කිරීමේදී මට එක් ගැටළුවක් හමු විය - හැඹිලි. එබැවින් දේශීය පරීක්ෂණ සඳහා src වෙනත් කොටසේ s.src = 'my_javascripts.js' + '?' + Math.floor (Math.random () * 10001) වැනි දෙයක් ආදේශ කරන්න;
මිරෙක් කොමරෙක්

සීඩීඑන් අනුවාදය පටවා නොමැති නම් ඇලෙක්ස්ගේ පිළිතුර ක්‍රියා නොකරනු ඇත, මන්ද බ්‍රව්සරය මෙම තත්වය හරහා ක්‍රියාත්මක වන අතර එය අතරතුර jquery අවශ්‍ය වන ඉතිරි ජාවාස්ක්‍රිප්ට් බාගත කර එය දෝෂයක් ලබා දෙයි -> ජාවාස්ක්‍රිප්ට් ගොනු බාගත කිරීමෙන් ඊළඟ කේත කොටස ක්‍රියාත්මක වීම වළක්වනු ඇත එබැවින් එය ප්‍රශ්නයක් නොවේ .
alex

2

සියලුම පොදු සීඩීඑන් පාහේ විශ්වසනීය ය. කෙසේ වෙතත්, අවහිර කරන ලද ගූගල් වසම ගැන ඔබ කනස්සල්ලට පත්ව සිටී නම්, ඔබට විකල්ප jQuery සීඩීඑන් වෙත ආපසු යා හැකිය . කෙසේ වෙතත්, එවැනි අවස්ථාවකදී, ඔබ එය ප්‍රතිවිරුද්ධ ආකාරයෙන් කිරීමට කැමති අතර වෙනත් සීඩීඑන් එකක් ඔබ කැමති විකල්පයක් ලෙස භාවිතා කර ගූගල් සීඩීඑන් වෙත ආපසු යාම අසාර්ථක ඉල්ලීම් සහ පොරොත්තු කාලය වළක්වා ගැනීමට:

<script src="https://pagecdn.io/lib/jquery/3.2.1/jquery.min.js"></script>
<script>
   window.jQuery || document.write('<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"><\/script>');
</script>

1

ASP.NET හි රේසර් සින්ටැක්ස් භාවිතා කරමින්, මෙම කේතය ආපසු හැරවීමේ සහය ලබා දෙන අතර අථත්‍ය මූලයක් සමඟ ක්‍රියා කරයි:

@{var jQueryPath = Url.Content("~/Scripts/jquery-1.7.1.min.js");}
<script type="text/javascript">
    if (typeof jQuery == 'undefined')
        document.write(unescape("%3Cscript src='@jQueryPath' type='text/javascript'%3E%3C/script%3E"));
</script>

නැතහොත් සහායකයකු කරන්න ( සහායක දළ විශ්ලේෂණය ):

@helper CdnScript(string script, string cdnPath, string test) {
    @Html.Raw("<script src=\"http://ajax.aspnetcdn.com/" + cdnPath + "/" + script + "\" type=\"text/javascript\"></script>" +
        "<script type=\"text/javascript\">" + test + " || document.write(unescape(\"%3Cscript src='" + Url.Content("~/Scripts/" + script) + "' type='text/javascript'%3E%3C/script%3E\"));</script>")
}

එය මේ ආකාරයට භාවිතා කරන්න:

@CdnScript("jquery-1.7.1.min.js", "ajax/jQuery", "window.jQuery")
@CdnScript("jquery.validate.min.js", "ajax/jquery.validate/1.9", "jQuery.fn.validate")

මම Razor යන ගැන සිත කවදාවත් තියෙනවා, නමුත්, එය (එය තාක් කල් මෙන් දෙගුණයක් වන්නේ, එම කේතය කෙටි කාලයක් වෙනුවට කරවන හැර, ක obfuscator වගේ මේ .
maaartinus

amaaartinus: එය ඇපල්-ඇපල්-සැසඳීමක් නොවේ. ඔබ සඳහන් කරන බෙන්ජමින් ආර්එච්ගේ පිළිතුර තනි සීඩීඑන් සත්කාරක පිටපතක් සඳහා ය. CdnScriptසහායක සමඟ , ඔබට අවශ්‍ය වන්නේ එක් ස්ක්‍රිප්ටයකට එක් කේත පේළියක් පමණි . ඔබ සතුව ඇති ස්ක්‍රිප්ට් වැඩි වන තරමට ගෙවීම් විශාල වේ.
එඩ්වඩ් බ්‍රේ

ෂුවර් ... ඒක නිකම්ම නිකම් හිරිහැරයක්. කෙසේ වෙතත්, මම හිතන්නේ එය ප්‍රශස්ත ක්‍රමය නොවේ. කිසිවක් අසමත් වුවහොත්, මම සීඩීඑන් සම්පූර්ණයෙන්ම නොසලකා හැර සියලු ස්ක්‍රිප්ට් සඳහා පසුබෑමට මාරු වෙමි. පැටවීම හරියටම ක්‍රියාත්මක වන්නේ කෙසේදැයි මා නොදන්නා බැවින් මෙය කළ හැකි දැයි මට විශ්වාස නැත.
maaartinus

amaaartinus: සෑම සීඩීඑන් ස්ක්‍රිප්ට් භාරයක්ම ස්වාධීනව අසමත් විය හැකි බැවින්, ඔබ එක් එක් බර වෙන වෙනම පරීක්ෂා කළ යුතුය. සීඩීඑන් එදිරිව එදිරිව සියලුම ස්ක්‍රිප්ට් දේශීයව පැටවීමෙන් පසුව තනි සීඩීඑන් චෙක්පතක විශ්වාසදායක ක්‍රමයක් නොමැත.
එඩ්වඩ් බ්‍රේ

මා කනස්සල්ලට පත්වන කාරණය වන්නේ සීඩීඑන් වෙබ් අඩවිය අසමත් වීම නිසා බොහෝ බර පැටවීම සඳහා වේලාවක් බලා සිටීමයි. ඉතින් මම කැමතියි ඒ වගේ දෙයක් ගන්න try { for (Script s : ...) cdnLoad(s); } catch (...) { for (Script s : ...) ownLoad(s); }. මෙය ifs පොකුරක් බවට පරිවර්තනය කිරීම බියකරු සිහිනයක් විය හැකිය.
මාටිනස්

1

document.write("<script></script>")JQuery උපස්ථය සඳහා ලිවීම පහසු බව පෙනුනද, ක්‍රෝම් එම නඩුවේ වලංගු කිරීමේ දෝෂයක් ලබා දෙයි. එබැවින් මම "ස්ක්‍රිප්ට්" වචනය බිඳ දැමීමට කැමැත්තෙමි. එබැවින් එය ඉහත පරිදි ආරක්ෂිත වේ.

<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.11.1.min.js"></script>
<script>if (typeof jQuery === "undefined") {
   window.jqFallback = true;
   document.write("<scr"+"ipt src='http://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.1/jquery.min.js'></scr"+"ipt>");
} </script>

දිගු කාලීන ගැටළු සඳහා, JQuery අඩුපාඩු සටහන් කිරීම වඩා හොඳය. ඉහත කේතයේ, පළමු සීඩීඑන් නොමැති නම් JQuery වෙනත් සීඩීඑන් එකකින් පටවනු ලැබේ. නමුත් ඔබට එම වැරදි සීඩීඑන් දැන ගැනීමට අවශ්‍ය වන අතර එය ස්ථිරවම ඉවත් කරන්න. (මෙම නඩුව ඉතා සුවිශේෂී අවස්ථාවකි) එසේම පසුබෑමේ ගැටළු සටහන් කිරීම වඩා හොඳය. එබැවින් ඔබට AJAX සමඟ වැරදි අවස්ථා යැවිය හැකිය. JQuery නිර්වචනය කර නොමැති නිසා, ඔබ AJAX ඉල්ලීම සඳහා වැනිලා ජාවාස්ක්‍රිප්ට් භාවිතා කළ යුතුය.

<script type="text/javascript">
    if (typeof jQuery === 'undefined' || window.jqFallback == true) {
        // XMLHttpRequest for IE7+, Firefox, Chrome, Opera, Safari
        // ActiveXObject for IE6, IE5
        var xmlhttp = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
        var url = window.jqFallback == true ? "/yourUrl/" : "/yourUrl2/";
        xmlhttp.open("POST", url, true);
        xmlhttp.send();
    }
</script>

1

ඔබගේ පාලනයෙන් ඔබ්බට බාහිර දත්ත ගබඩාවකින් සම්පත් පූරණය කිරීමට ඇති නොහැකියාව දුෂ්කර ය. මෙහි විස්තර කර ඇති පරිදි අතුරුදහන් කාර්යයන් සඳහා සොයමින්, කාලය ඉක්ම වීමේ දුක වළක්වා ගැනීමට මාර්ගයක් ලෙස සම්පූර්ණයෙන් සදොස් වේ: http://www.tech-101.com/support/topic/4499-issues-using-a-cdn/


0

තවත් විස්ථාපනය බව ෆෝල්බැක් ajax.googleapis.com සමග cdnjs.cloudflare.com :

(function (doc, $)
{
    'use strict';

    if (typeof $ === 'undefined')
    {
        var script = doc.querySelector('script[src*="jquery.min.js"]'),
            src = script.src.replace('ajax.googleapis.com', 'cdnjs.cloudflare.com');

        script.parentNode.removeChild(script);
        doc.write('<script src="' + src + '"></script>');
    }
})(document, window.jQuery || window.Zepto);
  • ඔබට jQuery අනුවාදයකට ඇලී සිටිය හැකිය
  • HTML ස්නිප්ස් සමඟ ක්‍රියා නොකරන වත්කම් කළමනාකරණය සඳහා පරිපූර්ණයි
  • වනයේ පරීක්ෂා කර ඇත - චීනයේ පරිශීලකයින් සඳහා පරිපූර්ණ ලෙස ක්‍රියා කරයි

ඔබට පහත ප්‍රකාශය විස්තාරනය කළ හැකිද: "ඔබට jQuery අනුවාදය ගැන සැලකිලිමත් විය යුතු නැත"?
ජොෂ් හබ්දාස්

අනුවාදය මෙම ප්‍රවේශයට අත නොතැබිය හැකි URL හි කොටසකි ... jquery / 3.xx / jquery.min.js
redaxmedia

1
JQuery 4 වන අනුවාදය වෙත සංශෝධනය කර පසුපසට නොගැලපෙන වෙනස්කම් හඳුන්වා දෙන විට එය කැඩී යාමේ හැකියාවක් තිබේද?
ජොෂ් හබ්දාස්

-1 මන්ද යත්, jQuery විසින් අනුවාදය නියම කර නොමැති නම් ඔබේ ස්ක්‍රිප්ට් තවමත් සහාය නොදක්වන බිඳෙනසුලු වෙනස්කම් හඳුන්වා දෙන්නේ නම් එය බිඳවැටීමට හේතු වේ.
ලුකාජි

@lookaji මම හිතන්නේ ඔබට එහි පසුබෑම තේරෙන්නේ නැහැ. එය සත්කාරකත්වය ඇති වසම ප්‍රතිස්ථාපනය කරන අතර ගොනු නාමය / අනුවාදය කිසිසේත් ස්පර්ශ නොකරයි.
redaxmedia

0

ඔබට වැනි කේත භාවිතා කළ හැකිය:

<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
<script>window.jQuery || document.write('<script type="text/javascript" src="./scripts/jquery.min.js">\x3C/script>')</script>

ඔබේ ස්ක්‍රිප්ට් සඳහා අඩුපාඩු කිහිපයක් සැකසීමට සහ පැටවීමේ ක්‍රියාවලිය ප්‍රශස්ත කිරීමට ඔබට භාවිතා කළ හැකි පුස්තකාල ද ඇත :

  • bas.js
  • RequireJS
  • yepnope

උදාහරණ:

bas.js මම හිතන්නේ දැනට ඇති හොඳම ප්‍රභේදය. ඔබගේ ස්ක්‍රිප්ට් එක දේශීය ගබඩාවේ තැන්පත් කරනු ඇත, එය ඊළඟ පැටවීම් වේගවත් කරයි. සරලම ඇමතුම:

basket.require({ url: '/path/to/jquery.js' });

මෙය පොරොන්දුවක් ලබා දෙන අතර ඔබට ඊළඟ ඇමතුම වැරදීමකින් කළ හැකිය, නැතහොත් සාර්ථකත්වය මත යැපීම් පැටවිය හැකිය:

basket
    .require({ url: '/path/to/jquery.js' })
    .then(function () {
        // Success
    }, function (error) {
        // There was an error fetching the script
        // Try to load jquery from the next cdn
    });

RequireJS

requirejs.config({
    enforceDefine: true,
    paths: {
        jquery: [
            '//ajax.aspnetcdn.com/ajax/jquery/jquery-2.0.0.min',
            //If the CDN location fails, load from this location
            'js/jquery-2.0.0.min'
        ]
    }
});

//Later
require(['jquery'], function ($) {
});

yepnope

yepnope([{
  load: 'http://ajax.aspnetcdn.com/ajax/jquery/jquery-2.0.0.min.js',
  complete: function () {
    if (!window.jQuery) {
      yepnope('js/jquery-2.0.0.min.js');
    }
  }
}]);
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.