স্ক্রিপ্ট এক্সিকিউশনটি কীভাবে jquery লোড না হওয়া পর্যন্ত অপেক্ষা করা যায়


106

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


নীচের উত্তর / মন্তব্যের জবাবে আমি কিছু মার্কআপ পোস্ট করছি।

পরিস্থিতি ... অ্যাসপেটর মাস্টারপেজ এবং চাইল্ডপেজ।

মাস্টারপেজটিতে, আমার কাছে জেকারি সম্পর্কিত একটি উল্লেখ রয়েছে। তারপরে সামগ্রী পৃষ্ঠায় আমার পৃষ্ঠা-নির্দিষ্ট স্ক্রিপ্টের একটি উল্লেখ রয়েছে reference পৃষ্ঠা নির্দিষ্ট স্ক্রিপ্টটি লোড করা হচ্ছে, এটি অভিযোগ করে যে "$ অপরিবর্তিত"।

যে জিনিসগুলিতে গুলি চালানো হচ্ছে তা দেখার জন্য আমি মার্কআপের বেশ কয়েকটি পয়েন্টে সতর্কতা রেখেছি এবং নিশ্চিত করেছি যে এটি ক্রমে গুলি ছড়িয়েছে:

  1. মাস্টার পৃষ্ঠা শিরোনাম।
  2. চাইল্ড পৃষ্ঠার সামগ্রী ব্লক 1 (মাস্টারপেজের মাথার ভিতরে অবস্থিত তবে মাস্টারপেজ স্ক্রিপ্টগুলি কল করার পরে)।
  3. শিশু পৃষ্ঠা বিষয়বস্তু ব্লক 2।

এখানে মাস্টারপেজের শীর্ষে মার্কআপ রয়েছে:

<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site.master.cs" Inherits="SiteMaster" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title>Reporting Portal</title>
    <link href="~/Styles/site.css" rel="stylesheet" type="text/css" />
    <link href="~/Styles/red/red.css" rel="stylesheet" type="text/css" />
    <script type="text/Scripts" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script> 
    <script type="text/Scripts" language="javascript" src="../Scripts/jquery.dropdownPlain.js"></script>
    <script type="text/Scripts" language="javascript" src="../Scripts/facebox.js"></script>
    <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
    <asp:ContentPlaceHolder ID="head" runat="server">
    </asp:ContentPlaceHolder>
</head>

তারপরে মাস্টারপেজের মুখ্য অংশে একটি অতিরিক্ত সামগ্রীপ্লেসহোল্ডার রয়েছে:

 <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
                </asp:ContentPlaceHolder>

শিশু পৃষ্ঠায়, এটি দেখতে এমন দেখাচ্ছে:

<%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Dashboard.aspx.cs" Inherits="Data.Dashboard" %>
<%@ Register src="../userControls/ucDropdownMenu.ascx" tagname="ucDropdownMenu" tagprefix="uc1" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
    <link rel="stylesheet" type="text/css" href="../Styles/paserMap.css" />
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
***CONTENT HERE***
    <script src="../Scripts/Dashboard.js" type="text/javascript"></script>
</asp:Content>

এখানে "../Script/Dashboard.js" ফাইলের সামগ্রী রয়েছে:

    $(document).ready(function () {

    $('.tgl:first').show(); // Show the first div

    //Description: East panel parent tab navigation
    $('.tabNav label').click(function () {
        $('.tabNav li').removeClass('active')
        $(this).parent().addClass('active');

        var index = $(this).parent('li').index();
        var divToggle = $('.ui-layout-content').children('div.tgl');

        //hide all subToggle divs
        divToggle.hide();
        divToggle.eq(index).show();
    });

});

4
আপনি ব্যবহার করছেন $(document).ready(function(){...});?
রোজ

আপনি যদি সহজ <script src="...">ট্যাগ সহ স্ক্রিপ্টগুলি লোড করে থাকেন তবে তা ঘটতে পারে না। আপনি প্রয়োজনীয় জেএস বা ল্যাবজেসের মতো কিছু ব্যবহার করছেন?
পয়েন্টি

আপনি পরবর্তী স্ক্রিপ্ট চালাচ্ছেন $(document).ready()বা $(window).load()? আমরা একটি উদাহরণ দেখতে পারেন?
জন হার্টসক

1
অ্যামন্ডা মায়ার এখন, নথি প্রস্তুত সম্পর্কিত ব্যবহার সম্পর্কে সমস্ত পরামর্শ উপেক্ষা করুন, যেহেতু আপনি ইতিমধ্যে এটি করছেন, তবে আমি বাজি ধরেছি যে এটি মাইমটাইপ যা তাদেরকে সিঙ্ক্রোনজভাবে লোড না করার কারণ করছে
স্যান্ডার

2
এটিকে পরিবর্তন type="text/Scripts"করার চেষ্টা করুন type="text/javascript"বা এগুলি একত্রে পরিত্রাণ পান এটির আর দরকার নেই, এগুলি থেকেও মুক্তি পান language="javascript। পাশাপাশি চেষ্টা করা শুরু করতে পারে।
জ্যাক 14

উত্তর:


11

সম্পাদন করা

আপনি কি আপনার স্ক্রিপ্ট ট্যাগের জন্য সঠিক ধরণের চেষ্টা করতে পারেন? আমি আপনাকে দেখতে পাচ্ছি text/Scriptsযা জাভাস্ক্রিপ্টের জন্য সঠিক মাইমটাইপ নয়।

এটা ব্যবহার কর:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script> 
<script type="text/javascript" src="../Scripts/jquery.dropdownPlain.js"></script>
<script type="text/javascript" src="../Scripts/facebox.js"></script>

শেষ সম্পাদনা

অথবা আপনি জাভাস্ক্রিপ্ট কোডের জন্য একটি লোডার যা প্রয়োজন .js এ একবার দেখে নিতে পারেন ।

আপনার প্রকল্পের উপর নির্ভর করে এটি কিছুটা ওভারকিল হতে পারে


204

পার্টিতে দেরীতে, এবং ব্রিগ্যুই 37 এর প্রশ্নের মতো, তবে ভবিষ্যতের রেফারেন্সের জন্য আমি নিম্নলিখিত পদ্ধতিটি ব্যবহার করি এবং jQuery লোড না হওয়া পর্যন্ত আমি যে ফাংশনগুলি স্থগিত করতে চাই তাতে পাস করি:

function defer(method) {
    if (window.jQuery) {
        method();
    } else {
        setTimeout(function() { defer(method) }, 50);
    }
}

এটি প্রতি window.jQuery50 মিমি অবস্হিতভাবে ডিফার পদ্ধতিটি কল করবে যতক্ষণ না এটি উপস্থিত হয় এবং কল হয়method()

বেনামে ফাংশন সহ একটি উদাহরণ:

defer(function () {
    alert("jQuery is now loaded");
});

2
এটি আমার পক্ষে কার্যকর হয়নি। পদ্ধতির অভ্যন্তরে, defined সংজ্ঞায়িত করা হয়নি ... এখনও কেন তা নিশ্চিত নয়।
অ্যারন লিফশিন

অ্যাডোব মিউজিকের অন্য কেউ ডিজাইন করেছিলেন এমন কোনও সাইটে কাস্টম কোড কাজ করার জন্য এটি একটি দুর্দান্ত সমাধান ছিল।
বুগাবিল

@ জিদিম এটি করবে না, কারণ এটি টাইমার এবং লুপ নয়। তবে ব্যবহারকারী যতক্ষণ পৃষ্ঠায় থাকে ততক্ষণ এটি চলতে থাকবে।
মাইক্রোস

স্ক্রিপ্টগুলির লোডিং ক্রমটি তদন্ত করা ভাল। আমি দেখেছি যে scriptjQuery লোড করা ট্যাগটিতে যদি কোনও deferবৈশিষ্ট্য থাকে, তবে এটি স্ক্রিপ্টগুলির কোড-সংজ্ঞায়িত ক্রম সত্ত্বেও, পরে না লোড না করে সমস্যার কারণ হতে পারে।
ADTC

19

আপনি স্ক্রিপ্টটি সত্যিকারের শেষে লোড করতে ডিফার অ্যাট্রিবিউটটি ব্যবহার করতে পারেন।

<script type='text/javascript' src='myscript.js' defer='defer'></script>

তবে সাধারণত আপনার স্ক্রিপ্টটি সঠিক ক্রমে লোড করাটি কৌতুকটি করা উচিত, সুতরাং আপনার নিজের স্ক্রিপ্টের আগে jquery অন্তর্ভুক্তি নিশ্চিত করতে ভুলবেন না

যদি আপনার কোডটি পৃষ্ঠাটিতে থাকে এবং আলাদা জেএস ফাইলে না থাকে সুতরাং ডকুমেন্টটি প্রস্তুত হওয়ার পরে আপনাকে অবশ্যই আপনার স্ক্রিপ্টটি কার্যকর করতে হবে এবং আপনার কোডটি এ জাতীয়ভাবে আবদ্ধ করার পরেও এটি কাজ করা উচিত:

$(function(){
//here goes your code
});

যতদিন আপনি একটি একক নির্ভরতা এই ঠিক আছে
Guillaume, সার্বজনীনভাবে

16

এটি করার আরেকটি উপায়, যদিও ডার্বিওর ডিফার পদ্ধতিটি আরও নমনীয়।

(function() {
  var nTimer = setInterval(function() {
    if (window.jQuery) {
      // Do something with jQuery
      clearInterval(nTimer);
    }
  }, 100);
})();

16

সবচেয়ে সহজ এবং নিরাপদ উপায় হল এরকম কিছু ব্যবহার করা:

var waitForJQuery = setInterval(function () {
    if (typeof $ != 'undefined') {

        // place your code here.

        clearInterval(waitForJQuery);
    }
}, 10);

2
প্রতিভা সমাধান। আপনাকে ধন্যবাদ
দিয়েগো ফোর্টস

13

আপনি অনলোড ইভেন্টটি চেষ্টা করতে পারেন। সমস্ত স্ক্রিপ্টগুলি লোড করার পরে এটি উত্থাপিত হয়েছিল:

window.onload = function () {
   //jquery ready for use here
}

তবে মনে রাখবেন, আপনি উইন্ডো.নলোড ব্যবহার করে অন্য স্ক্রিপ্টগুলিকে ওভাররাইড করতে পারেন।


এটি কাজ করে তবে আপনি সম্ভবত স্টাইলযুক্ত সামগ্রীর ঝলক দেখতে পাবেন যদি আপনার জিকোয়ারি পৃষ্ঠার চেহারা পরিবর্তন করে
ম্যাথু লক

1
: আপনি একটি ইভেন্টে শ্রোতা অন্যান্য স্ক্রিপ্ট অগ্রাহ্য এড়াতে যোগ করতে পারেন stackoverflow.com/a/15564394/32453 FWIW '
rogerdpack

@ আরগারডপ্যাক একমত, এটি আরও ভাল সমাধান।
নিগ্রিমিমিস্ট

10

আমি খুঁজে পেয়েছি যে প্রস্তাবিত সমাধানটি কেবলমাত্র অ্যাসিনক্রোনাস কোডকে মনে রেখে কাজ করে। উভয় ক্ষেত্রে কার্যকর হবে যে সংস্করণ এখানে:

document.addEventListener('DOMContentLoaded', function load() {
    if (!window.jQuery) return setTimeout(load, 50);
    //your synchronous or asynchronous jQuery-related code
}, false);

ধন্যবাদ, একবার লোড হয়ে গেলে এবং প্রতি 50 মিটারে ফ্যালব্যাক শুরু হিসাবে লুপ করা কেবল শীর্ষ ভোটের উত্তরের মতো সেটইন্টারওয়াল দিয়ে লুপ দেওয়ার চেয়ে অনেক ভাল। সর্বোত্তম ক্ষেত্রে আপনার উচ্চতর উত্তরের 25 মিমি গড়ের পরিবর্তে 0 মিমি বিলম্ব হয়।
লুক

সুন্দর এবং মার্জিত - আপনি কীভাবে loadফাংশনটি পাস করবেন তা পছন্দ করি তবে তারপরে আবার এটি পুনরায় ব্যবহার করুন setTimeout
নিমেসেরিয়াল

6

এটি একটি সাধারণ সমস্যা, কল্পনা করুন আপনি একটি দুর্দান্ত পিএইচপি টেম্প্লেটিং ইঞ্জিন ব্যবহার করেছেন, সুতরাং আপনার বেস লেআউটটি রয়েছে:

HEADER
BODY ==> dynamic CONTENT/PAGE
FOOTER

এবং অবশ্যই, আপনি কোথাও পড়েছেন পৃষ্ঠার নীচে জাভাস্ক্রিপ্ট লোড করা আরও ভাল, তাই আপনার গতিশীল সামগ্রীটি jQuery (বা $) কে জানে না।

এছাড়াও আপনি কোথাও পড়েছেন ছোট জাভাস্ক্রিপ্টের ইনলাইন করা ভাল, সুতরাং আপনি কোনও পৃষ্ঠায় jQuery প্রয়োজন তা ভাবুন, বাবুম, defined সংজ্ঞায়িত হয়নি (.. এখনও ^^)।

আমি ফেসবুকের সমাধানটি পছন্দ করি

window.fbAsyncInit = function() { alert('FB is ready !'); }

সুতরাং অলস প্রোগ্রামার হিসাবে (আমার উচিত একটি ভাল প্রোগ্রামার say বলা উচিত), আপনি একটি সমতুল্য (আপনার পৃষ্ঠার মধ্যে) ব্যবহার করতে পারেন:

window.jqReady = function() {}

এবং jQuery অন্তর্ভুক্ত করার পরে আপনার বিন্যাসের নীচে যুক্ত করুন

if (window.hasOwnProperty('jqReady')) $(function() {window.jqReady();});

ধন্যবাদ! ঠিক সেই ক্ষেত্রেই আমি মুখোমুখি হচ্ছি।
কুমজ

অথবা উপরের :) jQuery লোড সরানো stackoverflow.com/a/11012073/32453
rogerdpack

5

"অপেক্ষা" (যা সাধারণত ব্যবহার করে করা হয় setTimeout) পরিবর্তে আপনি উইন্ডোতে jQuery অবজেক্টের সংজ্ঞায়িত করতে নিজের কোড প্রয়োগ করতে একটি হুক হিসাবে ব্যবহার করতে পারেন যা এটির উপর নির্ভর করে। এটি সম্পত্তি সংজ্ঞা, ব্যবহার করে সংজ্ঞায়নের মাধ্যমে অর্জনযোগ্য Object.defineProperty

(function(){
  var _jQuery;
  Object.defineProperty(window, 'jQuery', {
    get: function() { return _jQuery; },
    set: function($) {
      _jQuery = $;

      // put code or call to function that uses jQuery here

    }
  });
})();

এটি অস্পষ্টভাবে কার্যকর হবে যদি jQuery আসলে একটি উইন্ডো সম্পত্তি সংজ্ঞায়িত করে, তবে মনে হয় না?
জিম

এটি প্রকৃতপক্ষে কোনও সম্পত্তি সেট করে না, তবে এটি বিশ্বব্যাপী স্কোপ (যেমন ) window.jQueryএর jQueryভেরিয়েবল সংজ্ঞায়নের মাধ্যমে একটি মানকে সেট করে window। এটি কোডে সংজ্ঞায়িত উইন্ডো অবজেক্টটিতে সম্পত্তি সেটার ফাংশনটি ট্রিগার করবে।
রক্ষক এক

এই কোডটি কার্যকর করার আগে jQuery সম্পত্তি সংজ্ঞায়িত হয়ে গেলে এটি কাজ করে না; উদাহরণস্বরূপ, যদি আপনার বিলম্বিত jquery.js এই কোডটি লোড হওয়ার আগে লোড হয়। ওয়ান সমাধান করার আগে আপনার ডেফার্ড jquery.js করা হয় </body>পরিবর্তে সামনে</head>
user36388

@ ব্যবহারকারী: jQuery (বিলম্বিত বা অন্যথায়) লোড হওয়ার আগে কেবল কোডটি কার্যকর করুন। আপনি কোথায় এটি লোড করেন তা বিবেচনাধীন নয়, আমার কোড খণ্ডটি এর আগে আসবে।
রক্ষক এক

1
এটি খুব কার্যকর যদি আপনি গ্যারান্টি দিতে পারেন যে এগুলি ব্যবহার করে এমন স্ক্রিপ্টগুলি আপনার নথিতে jQuery অন্তর্ভুক্ত করার আগেই আসে। উপরের লুপিং পদ্ধতির কোনও অদক্ষতা বা রেস-কেস দৃশ্যের কোনওটিই নয়।
RedYetiCo

4

ব্যবহার করুন:

$(document).ready(function() {
    // put all your jQuery goodness in here.
});

আরও তথ্যের জন্য এটি দেখুন: http://www.learningjquery.com/2006/09/introducing- ডকুমেন্ট- প্রস্তুত

দ্রষ্টব্য: আপনার JQuery লাইব্রেরির জন্য স্ক্রিপ্ট আমদানি যতক্ষণ না এই কলটির উপরে থাকবে ততক্ষণ এটি কাজ করা উচিত।

হালনাগাদ:

যদি কোনও কারণে আপনার কোডটি সুসংগতভাবে লোড হচ্ছে না (যা আমি কখনই চালিত করি না, তবে দৃশ্যত নীচের মন্তব্যটি থেকে সম্ভব হওয়া উচিত নয়), আপনি নীচের মত কোড করতে পারেন।

function yourFunctionToRun(){
    //Your JQuery goodness here
}

function runYourFunctionWhenJQueryIsLoaded() {
    if (window.$){
        //possibly some other JQuery checks to make sure that everything is loaded here

        yourFunctionToRun();
    } else {
        setTimeout(runYourFunctionWhenJQueryIsLoaded, 50);
    }
}

runYourFunctionWhenJQueryIsLoaded();

6
এই অপেক্ষার অবধি ডোম প্রস্তুত, ততক্ষণ জ্যাকিউরি বোঝাই হয় না। তার কাছে সম্ভবত 2 টি স্ক্রিপ্ট ফাইল রয়েছে, একটি সিডিএন থেকে 1 (গুগল থেকে জ্যাকোরি এবং স্থানীয়ভাবে একটি প্লাগইন) যেখানে 1 টি অন্যটির তুলনায় আগে লোড করা হয় .... আপনার কোডটি এটি সমাধান করে না, যদি প্লাগইন নিজেই jquery এর চেয়ে দ্রুত লোড হয়
স্যান্ডার

2
আমি আপনার সাথে একমত নই @ সিন্ডারটি লোডিং সমকালীন
হওয়ায়

আপনি ঠিক বলেছেন, তাদের সম্পর্কে আমার ধারণা যদি একটি ভিন্ন ডোমেন থেকে আসে তবে এটি অ্যাসিক্রোনাস লোড হচ্ছে! আমাকে এর জন্য ক্ষমা করুন
Sander

Jquery উপলব্ধ না হয়ে অন্য বিবৃতিতে না যাওয়ার কারণে এটি উপলব্ধ না হলে এটি একটি ব্যতিক্রম ছুঁড়ে ফেলবে। অনুমান করুন এটি চেষ্টা এবং ধরা বা কিছু হওয়া উচিত।
স্যাম স্টোলেঙ্গা

@ স্যামসটোলিঙ্গা: ধন্যবাদ, এটি এখন ঠিক করা উচিত।
ব্রিগ্যুই 37

3

আমি ইন্টারভাল জিনিসপত্রের খুব পছন্দ করি না। আমি যখন jquery, বা আসলে কিছু স্থগিত করতে চাই, তখন এটি সাধারণত এরকম কিছু হয়।

শুরু করা:

<html>
 <head>
  <script>var $d=[];var $=(n)=>{$d.push(n)}</script>
 </head>

তারপর:

 <body>
  <div id="thediv"></div>

  <script>
    $(function(){
       $('#thediv').html('thecode');
    });
  </script>

  <script src="http://code.jquery.com/jquery-3.2.1.min.js" type="text/javascript"></script>

তারপরে অবশেষে:

  <script>for(var f in $d){$d[f]();}</script>
 </body>
<html>

বা কম মন-বগল সংস্করণ:

<script>var def=[];function defer(n){def.push(n)}</script>
<script>
defer(function(){
   $('#thediv').html('thecode');
});
</script>
<script src="http://code.jquery.com/jquery-3.2.1.min.js" type="text/javascript"></script>
<script>for(var f in def){def[f]();}</script>

এবং অ্যাসিঙ্কের ক্ষেত্রে আপনি jquery অনলোডের উপর চাপানো ফাংশনগুলি সম্পাদন করতে পারেন।

<script async onload="for(var f in def){def[f]();}" 
src="jquery.min.js" type="text/javascript"></script>

বিকল্পভাবে:

function loadscript(src, callback){
  var script = document.createElement('script');
  script.src = src
  script.async = true;
  script.onload = callback;
  document.body.appendChild(script);
};
loadscript("jquery.min", function(){for(var f in def){def[f]();}});

2

আমি মনে করি না এটি আপনার সমস্যা। স্ক্রিপ্ট লোডিং ডিফল্টরূপে সিঙ্ক্রোনাস, সুতরাং আপনি যদি deferঅন্য এজেএক্স অনুরোধের মাধ্যমে অ্যাসিস্ট্রিটিটি বা jQuery নিজে লোড না করেন তবে আপনার সমস্যাটি সম্ভবত 404 এর মতো আরও কিছু। আপনি কি আপনার মার্কআপটি দেখাতে পারেন, এবং আপনি যদি সন্দেহজনক কিছু দেখতে পান তবে আমাদের জানান let ফায়ারব্যাগ নাকি ওয়েব ইন্সপেক্টর?


2

defer()দারিও থেকে আরও পুনরায় ব্যবহারযোগ্য হতে প্রসারিত করা যাক ।

function defer(toWaitFor, method) {
    if (window[toWaitFor]) {
        method();
    } else {
        setTimeout(function () { defer(toWaitFor, method) }, 50);
    }
}

যা তখন চালানো হয়:

function waitFor() {
    defer('jQuery', () => {console.log('jq done')});
    defer('utag', () => {console.log('utag done')});
}

1

এটা যাচাই কর:

https://jsfiddle.net/neohunter/ey2pqt5z/

এটি একটি জাল jQuery অবজেক্ট তৈরি করবে, যা আপনাকে jquery এর অনলোড পদ্ধতিগুলি ব্যবহার করতে দেয় এবং jquery লোড হওয়ার সাথে সাথে এগুলি কার্যকর করা হবে।

এটি নিখুঁত নয়।

// This have to be on <HEAD> preferibly inline
var delayed_jquery = [];
jQuery = function() {
  if (typeof arguments[0] == "function") {
    jQuery(document).ready(arguments[0]);
  } else {
    return {
      ready: function(fn) {
        console.log("registering function");
        delayed_jquery.push(fn);
      }
    }
  }
};
$ = jQuery;
var waitForLoad = function() {
  if (typeof jQuery.fn != "undefined") {
    console.log("jquery loaded!!!");
    for (k in delayed_jquery) {
      delayed_jquery[k]();
    }
  } else {
    console.log("jquery not loaded..");
    window.setTimeout(waitForLoad, 500);
  }
};
window.setTimeout(waitForLoad, 500);
// end



// now lets use jQuery (the fake version)
jQuery(document).ready(function() {
  alert('Jquery now exists!');
});

jQuery(function() {
  alert('Jquery now exists, this is using an alternative call');
})

// And lets load the real jquery after 3 seconds..
window.setTimeout(function() {
  var newscript = document.createElement('script');
  newscript.type = 'text/javascript';
  newscript.async = true;
  newscript.src = 'https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js';
  (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(newscript);
}, 3000);


এই নথি প্রস্তুত ফাংশন নিবন্ধনের জন্য কোন ঝামেলা সমাধান ধন্যবাদ
zandev

0

একটি স্পর্শিনী নোট এখানে লোড ব্যবহার পন্থা setTimeoutবা setInterval। এই ক্ষেত্রে এটি সম্ভব যে যখন আপনার চেক আবার চালানো হবে তখনই ডিওএম ইতিমধ্যে লোড হয়ে যাবে এবং ব্রাউজারের DOMContentLoadedইভেন্টটি বরখাস্ত করা হবে, সুতরাং আপনি এই পদ্ধতিগুলি ব্যবহার করে নির্ভরযোগ্যভাবে সেই ইভেন্টটি সনাক্ত করতে পারবেন না। আমি যা পেয়েছি তা হল যে jQuery এর readyএখনও কাজ করে, তবে আপনি নিজের স্বাভাবিকটি এম্বেড করতে পারেন

jQuery(document).ready(function ($) { ... }

আপনার setTimeoutবা setIntervalসমস্ত কিছুর অভ্যন্তরে স্বাভাবিক হিসাবে কাজ করা উচিত।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.