jquery লোড হয়েছে কিনা তা পরীক্ষা করে দেখুন, তবে এটি মিথ্যা হলে লোড করুন


117

কেউ কি জ্যাকারিটি (জাভাস্ক্রিপ্ট সহ) লোড করা হয়েছে কিনা তা যাচাই করতে জানেন কীভাবে এটি লোড করা হয়নি তা লোড করুন।

কিছুটা এইরকম

if(!jQuery) {
    //load jquery file
}

1
সতর্ক থাকুন জন্য ধন্যবাদ! আশা করি এটি আসলে কখনও ডাকতে হবে না। শুধু অতিরেক একটি সামান্য বিট যোগ করার চেষ্টা
সতেরো

উত্তর:


166

এরকম কিছু হতে পারে:

<script>
if(!window.jQuery)
{
   var script = document.createElement('script');
   script.type = "text/javascript";
   script.src = "path/to/jQuery";
   document.getElementsByTagName('head')[0].appendChild(script);
}
</script>

5
দ্রষ্টব্য যে এটি ধরে নিয়েছে যে ডকুমেন্টটিতে এটি headএকটি স্ক্রিপ্ট উপাদান যুক্ত করতে পারে
ড্যানিয়েল লেচেমিন্যান্ট

1
এই বিষয়ে টুইট করুন যদি তা হত( document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0] ).appendChild( script );
পাওয়েলগ্লো

3
@ পাওয়েল আমি দেখেছি যে কিছু বাস্তবায়ন প্রথম স্ক্রিপ্ট ট্যাগের আগে / পরে উপাদানটি সন্নিবেশ করানো হয়েছে, যেহেতু আপনি জানেন যে এর মধ্যে একটি থাকতে হবে।
ড্যানিয়েল লেচেমিন্যান্ট

আমার বিশ্বাস, স্ক্রিপ্ট ট্যাগটি দেহে যুক্ত করা সমস্ত ব্রাউজারে কাজ করে।
স্টিভেন লু

3
সুতরাং, উপসংহারে; সবচেয়ে নিরাপদ পদ্ধতিটি হ'ল: (ডকুমেন্ট.জেটএলিমেন্টস বাইট্যাগনাম ('হেড') [0] || ডকুমেন্ট.সেটমেন্ট বিট্যাগনাম ('স্ক্রিপ্ট') [0]) .এপেন্ডচিল্ড (স্ক্রিপ্ট); যেহেতু স্ক্রিপ্ট ট্যাগের অন্তত একটি উদাহরণ থাকবে।
টর্মেটো

106

আইই ত্রুটি ফিরিয়ে দেবে বলে "if (! JQuery)" ব্যবহার করা এড়িয়ে চলুন: jQuery 'অপরিজ্ঞাত'

পরিবর্তে ব্যবহার করুন: যদি (jQuery == 'অপরিজ্ঞাত' টাইপ)

<script type="text/javascript">
if (typeof jQuery == 'undefined') {
    var script = document.createElement('script');
    script.type = "text/javascript";
    script.src = "http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js";
    document.getElementsByTagName('head')[0].appendChild(script);
}
</script>

আপনার শিরোনামে এড করার পরে জিকুয়েরি লোড হয়েছে কিনা তাও আপনাকে পরীক্ষা করতে হবে। অন্যথায় আপনাকে উইন্ডো.অনলোড ইভেন্টের জন্য অপেক্ষা করতে হবে, যা পৃষ্ঠায় ছবি থাকলে ধীর। এখানে একটি নমুনা স্ক্রিপ্ট যা জিকুয়েরি ফাইলটি লোড হয়েছে কিনা তা যাচাই করে, যেহেতু আপনার document (নথি) ব্যবহার করতে সক্ষম হওয়ার সুবিধা হবে না। প্রস্তুত (ফাংশন ...

http://neighborhood.org/core/sample/jquery/append-to-head.htm


কি হবে script.onload = function() { alert('jQuery loaded!'); }? কাজ করবে?
রোবসচ

14

পদ্ধতি 1:

if (window.jQuery) {  
    // jQuery is loaded  
} else {
    // jQuery is not loaded
}

পদ্ধতি 2:

if (typeof jQuery == 'undefined') {  
    // jQuery is not loaded
} else {
    // jQuery is loaded
}

যদি jquery.js ফাইলটি লোড না করা হয়, আমরা এটির মতো লোডটি চাপিয়ে দিতে পারি:

if (!window.jQuery) {
  var jq = document.createElement('script'); jq.type = 'text/javascript';
  // Path to jquery.js file, eg. Google hosted version
  jq.src = '/path-to-your/jquery.min.js';
  document.getElementsByTagName('head')[0].appendChild(jq);
}

8

এটা চেষ্টা কর :

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

JQuery উপলভ্য আছে কি না তা এই পরীক্ষা করে, যদি না তা নির্দিষ্ট পথ থেকে গতিশীলভাবে যুক্ত করে।

সূত্র: jQuery এর জন্য একটি "অন্তর্ভুক্ত_স" সিমুলেট করুন

অথবা

js এর জন্য সমপরিমাণ সূত্র: https://raw.github.com/kvz/phpjs/master/functions/language/include_once.js

function include_once (filename) {
  // http://kevin.vanzonneveld.net
  // +   original by: Legaev Andrey
  // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
  // +   improved by: Michael White (http://getsprink.com)
  // +      input by: Brett Zamir (http://brett-zamir.me)
  // +   bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
  // +   bugfixed by: Brett Zamir (http://brett-zamir.me)
  // -    depends on: include
  // %        note 1: Uses global: php_js to keep track of included files (though private static variable in namespaced version)
  // *     example 1: include_once('http://www.phpjs.org/js/phpjs/_supporters/pj_test_supportfile_2.js');
  // *     returns 1: true
  var cur_file = {};
  cur_file[this.window.location.href] = 1;

  // BEGIN STATIC
  try { // We can't try to access on window, since it might not exist in some environments, and if we use "this.window"
    //    we risk adding another copy if different window objects are associated with the namespaced object
    php_js_shared; // Will be private static variable in namespaced version or global in non-namespaced
    //   version since we wish to share this across all instances
  } catch (e) {
    php_js_shared = {};
  }
  // END STATIC
  if (!php_js_shared.includes) {
    php_js_shared.includes = cur_file;
  }
  if (!php_js_shared.includes[filename]) {
    if (this.include(filename)) {
      return true;
    }
  } else {
    return true;
  }
  return false;
}

2

আপনার মাথা সংযুক্ত হওয়া সত্ত্বেও এটি সমস্ত ব্রাউজারে কাজ না করে। ধারাবাহিকভাবে কাজ করার জন্য এটিই ছিল একমাত্র পদ্ধতি।

<script type="text/javascript">
if (typeof jQuery == 'undefined') {
  document.write('<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"><\/script>');        
  } 
</script>

2
কি খুব বেশি document.write ভয়ঙ্কর নয় ?
কারসিজেনিকেট

1

JQuery লোড হয়েছে কিনা তা বিভিন্ন উপায়ে যেমন পরীক্ষা করতে পারেন:

if (typeof jQuery == 'undefined') {

    // jQuery IS NOT loaded, do stuff here.

}


if (typeof jQuery == 'function')
//or
if (typeof $== 'function')


if (jQuery) {
    // This will throw an error in STRICT MODE if jQuery is not loaded, so don't use if using strict mode
    alert("jquery is loaded");
} else {
    alert("Not loaded");
}


if( 'jQuery' in window ) {
    // Do Stuff
}

এখন jQuery লোড করা হয়নি কিনা তা যাচাই করার পরে, আপনি এই জাতীয় jQuery লোড করতে পারেন:

যদিও এই অংশটি এই পোস্টে অনেকের দ্বারা জবাব দেওয়া হয়েছে তবে এখনও কোডটির সম্পূর্ণতার স্বার্থে উত্তর দিচ্ছেন


    // This part should be inside your IF condition when you do not find jQuery loaded
    var script = document.createElement('script');
    script.type = "text/javascript";
    script.src = "http://code.jquery.com/jquery-3.3.1.min.js";
    document.getElementsByTagName('head')[0].appendChild(script);

1

পুরানো পোস্ট তবে আমি সার্ভাল জায়গাগুলিতে যা পরীক্ষা করা হয় তার একটি ভাল সমাধান করেছি।

https://github.com/CreativForm/Load-jQuery-if-it-is-not-already-loaded

কোড:

(function(url, position, callback){
    // default values
    url = url || 'https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js';
    position = position || 0;

    // Check is jQuery exists
    if (!window.jQuery) {
        // Initialize <head>
        var head = document.getElementsByTagName('head')[0];
        // Create <script> element
        var script = document.createElement("script");
        // Append URL
        script.src = url;
        // Append type
        script.type = 'text/javascript';
        // Append script to <head>
        head.appendChild(script);
        // Move script on proper position
        head.insertBefore(script,head.childNodes[position]);

        script.onload = function(){
            if(typeof callback == 'function') {
                callback(jQuery);
            }
        };
    } else {
        if(typeof callback == 'function') {
            callback(jQuery);
        }
    }
}('https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js', 5, function($){ 
    console.log($);
}));

গিটহাব এ আরও ভাল ব্যাখ্যা তবে উত্সাহজনকভাবে এই ফাংশনটি আপনি আপনার এইচটিএমএল কোডের যে কোনও জায়গায় যুক্ত করতে পারেন এবং ইতিমধ্যে লোড না হলে আপনি jquery শুরু করবেন initial


0
var f = ()=>{
    if (!window.jQuery) {
        var e = document.createElement('script');
        e.src = "https://code.jquery.com/jquery-3.2.1.min.js";
        e.onload = function () {
            jQuery.noConflict();
            console.log('jQuery ' + jQuery.fn.jquery + ' injected.');
        };
        document.head.appendChild(e);
    } else {
        console.log('jQuery ' + jQuery.fn.jquery + '');
    }
};
f();

এটির ব্যাখ্যা দেওয়ার জন্য আপনার কোডটিতে কিছু মন্তব্য যুক্ত করতে হবে।
ইব্রাহিম পৌরসাদেকী

0
<script>
if (typeof(jQuery) == 'undefined'){
        document.write('<scr' + 'ipt type="text/javascript" src=" https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></scr' + 'ipt>');
}
</script>

-1

আমি আমার প্রকল্পের জন্য সিডিএন ব্যবহার করছি এবং ফলব্যাক হ্যান্ডলিংয়ের অংশ হিসাবে আমি নীচের কোডটি ব্যবহার করছিলাম,

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    <script type="text/javascript">
                if ((typeof jQuery == 'undefined')) {
                    document.write(unescape("%3Cscript src='/Responsive/Scripts/jquery-1.9.1.min.js' type='text/javascript'%3E%3C/script%3E"));   
                }
</script>

কেবল যাচাই করতে, আমি সিডিএন রেফারেন্সটি সরিয়েছি এবং কোডটি কার্যকর করেছি। এটি ভাঙ্গা এবং jifery টাইপ হিসাবে লুপটি ফাংশন হিসাবে আসছে যদি কখনও প্রবেশ করা হয় না পরিবর্তে ।

এটি jquery 1.6.1 এর পুরানো সংস্করণে রয়েছে যা ফাংশনটি ফিরিয়ে দেয় এবং আমার কোডটি ভেঙে দেয় কারণ আমি jquery 1.9.1 ব্যবহার করছি। আমার যেমন jquery এর সঠিক সংস্করণ প্রয়োজন, আমি নীচের মতো কোড সংশোধন করেছি,

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script type="text/javascript">
            if ((typeof jQuery == 'undefined') || (jQuery.fn.jquery != "1.9.1")) {
                document.write(unescape("%3Cscript src='/Responsive/Scripts/jquery-1.9.1.min.js' type='text/javascript'%3E%3C/script%3E"));   
            }
</script>
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.