কীভাবে একটি ডিভ এলিমেন্টে অনলোড লোড ইভেন্ট যুক্ত করা যায়


231

কিভাবে আপনি একটি যুক্ত করবেন onload কোনও উপাদানকে ইভেন্ট যুক্ত করবেন?

ন্ন:

<div onload="oQuickReply.swap();" ></div>

এই জন্য?


সেরা bodyআরও ভালdiv
কিংডাইডার

2
divউপাদানগুলি "লোড" করে না।
amn

1
একটি নেই আরো প্রাসঙ্গিক উত্তর এখন - সম্ভবত আপনি গ্রহণ সংশোধন করতে পারি?
এমপ্লুঞ্জন

উত্তর:


233

না, আপনি পারবেন না। এটিকে কাজ করার সহজতম উপায় হ'ল উপাদানটির পরে সরাসরি ফাংশন কল করা

উদাহরণ:

...
<div id="somid">Some content</div>
<script type="text/javascript">
   oQuickReply.swap('somid');
</script>
...

বা - আরও ভাল - ঠিক সামনে </body>:

...
<script type="text/javascript">
   oQuickReply.swap('somid');
</script>
</body>

... সুতরাং এটি নিম্নোক্ত সামগ্রী লোড করা থেকে ব্লক করে না।


3
ব্যবহারের উপর নির্ভর করে এটি সামনে রাখাই ভাল নয় </body>। fe আপনি <div>জাভাস্ক্রিপ্ট সক্ষম থাকলেই কেবল লুকিয়ে রাখতে চান তবে "ফ্ল্যাশিং" এড়ান। দৃশ্যমানতার সময় ব্রাউজারকে সমস্ত ইনলাইন / বাহ্যিক স্ক্রিপ্টগুলি লোড / পার্স করতে কতক্ষণ প্রয়োজন তার উপর নির্ভর করে।
মিগ্লুট্ট

এটি কি কোনও অ্যান্টি-প্যাটার্ন, এতে সমস্ত ফাইলকে নিজের ফাইলে রাখা ভাল? নির্দিষ্ট উপাদানগুলিকে নথিতে লোড করা হলে জেএসকে কীভাবে নির্বাচন করার উপায় আছে?
রায়ান ওয়ালটন

1
এটি কোনও অ্যান্টি-প্যাটার্ন নয়, তবে আপনি সাধারণত ডিওএম লোড হওয়ার জন্য অপেক্ষা করেন এবং তারপরে সমস্ত জেএস স্টাফ করেন।
ড্যানমান

1
W3schools.com/tags/ev_onload.asp - যে সমস্ত এইচটিএমএল উপাদান বর্তমানে সমর্থন করে তাদের জন্য এই লিঙ্কটি এখানে ফেলে দিনonload
ব্র্যান্ডন বেনিফিল্ড

এই উত্তরটি আর প্রাসঙ্গিক নয়। এখানে একটি নতুন রয়েছে
এমপ্লুঞ্জন

74

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


18
কেবলমাত্র শরীরের উপাদান নয়, আপনি এটি চিত্র এবং আইফ্রেমের সাথেও ব্যবহার করতে পারেন উদাহরণস্বরূপ, অন্যদের মধ্যে। w3schools.com/jsref/event_onload.asp
জো

2
এটি লক্ষণীয় যে ইনলাইন স্ক্রিপ্টগুলি বাহ্যিক সংস্থান নয় এবং তাই এইচটিএমএল বৈশিষ্ট্য ব্যতীত onloadকারও <script>উপর কাজ করে না src(আমি এই পরামর্শটি একটি ইনলাইন স্ক্রিপ্টে ব্যবহার করার চেষ্টা করছিলাম, এবং দেখেছি এটি কার্যকর হয়নি)
গগ

64

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

<img src onerror='alert()'>

4
উজ্জ্বল! কৌণিক থেকেও টাইপস্ক্রিপ্ট ট্রিগার করতে ব্যবহার করা যেতে পারে: img src (ত্রুটি) = "ফাংশন ()" />
ব্রায়ান রিচার্ডসন

1
এটি একটি দুর্দান্ত পদ্ধতির। দয়া করে আপনার সমাধানটির এখানে আমার বিস্তৃতি দেখুন: stackoverflow.com/questions/4057236/…
রাউনিন

ক্যানিউজ? ͏͏͏͏͏͏͏
পেসারিয়ার

28

অনলোড ইভেন্টটি কেবলমাত্র নীচে তালিকাভুক্ত কয়েকটি ট্যাগ সহ সমর্থন করে।

<body>, <frame>, <iframe>, <img>, <input type="image">, <link>, <script>, <style>

এখানে লোড ইভেন্টের জন্য রেফারেন্স


17

এটা চেষ্টা কর! এবং ডিভিতে কখনই ট্রিগার ব্যবহার করবেন না!

ডিভ ট্যাগের আগে কল করতে আপনি ফাংশনটি সংজ্ঞায়িত করতে পারেন।

$(function(){
    $('div[onload]').trigger('onload');
});

ডেমো: জেসফিডাল


উপরে jsfiddle একটি jQuery লোডার নেই - এবং কাজ করে না।
আরিফ বুরহান 13

@ আরিফ বুরহান আমি এটি পাই না। আমি JQuery (প্রান্ত) লোড করি। আপনি আবার পরীক্ষা করতে পারেন? এমনকি মোবাইল ব্যবহার করে "হ্যালো ওয়ার্ল্ড" দেখতে পাচ্ছি।
কুওফ্প

@ কুফ্প এই টার্নের যখন তাদের টার্গেট এলিমেন্টগুলি বোঝা হয় তখন হ্যান্ডলারের কাছে আসলে কল হয় না @ এটি কেবল এমন উপাদানগুলির অনুসন্ধানের জন্য jquery ব্যবহার করে যার একটি বৈশিষ্ট্য রয়েছে (আপনার ক্ষেত্রে onload) এবং তারপরে সেই ফাংশনগুলিকে কল করে। আপনি onloadযেমন jsfiddle.net/mrszgbxh
ত্রিন্ডাজ

1
@ ত্রিঞ্জাজ হুবহু! এটি অন্য উপায়ে রাখতে, স্ক্রিপ্টগুলি ওভারলোড ইভেন্টের মতো কাজ করে। মন্তব্যের জন্য ধন্যবাদ!
কুফপ

10

আমি এখানে এখানে যুক্ত করতে চাই যে কেউ যদি ডিভিডের লোড ইভেন্টে কোনও ফাংশন কল করতে চায় এবং আপনি jQuery ব্যবহার করতে না চান (আমার ক্ষেত্রে যেমন বিরোধের কারণে) তবে সমস্ত এইচটিএমএল কোড বা অন্য কোনওটির পরে কেবল একটি ফাংশন কল করুন অন্যান্য কোড যা আপনি লিখেছেন ফাংশন কোড সহ এবং কেবল একটি ফাংশন কল।

/* All Other Code*/
-----
------
/* ----At the end ---- */
<script type="text/javascript">
   function_name();
</script>

অথবা

/* All Other Code*/
-----
------
/* ----At the end ---- */
<script type="text/javascript">
 function my_func(){
   function definition;      

  }

 my_func();
</script>

আপনি কি এইভাবে একাধিক ফাংশন যুক্ত করতে পারেন? অর্থাৎ এইচটিএমএল ডকুমেন্টের শেষে </ b >> ট্যাগের ঠিক আগে? যদি হ্যাঁ হয় তবে তারা যে ক্রমে লিখিত হয়েছে তা কি কার্যকর?
নিও

হ্যাঁ আপনি একাধিক ফাংশন যুক্ত করতে পারেন এবং অর্ডারটির ঠিক প্লেইন (ভ্যানিলা) জাভাস্ক্রিপ্টের কোনও কারণ নেই।
দেব_খান

7

আমরা নীচে একটি নমুনা কোড যুক্ত করে দক্ষ পদ্ধতিতে সমস্যার সমাধান করতে মিউটেশনঅবার্সারটি ব্যবহার করতে পারি

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <style>
        #second{
            position: absolute;
            width: 100px;
            height: 100px;
            background-color: #a1a1a1;
        }
    </style>
</head>
<body>
<div id="first"></div>
<script>
    var callthis = function(element){
           element.setAttribute("tabIndex",0);
        element.focus();
        element.onkeydown = handler;
        function handler(){
                alert("called")
        }
    }


    var observer = new WebKitMutationObserver(function(mutations) {
        mutations.forEach(function(mutation) {
            for (var i = 0; i < mutation.addedNodes.length; i++)
            if(mutation.addedNodes[i].id === "second"){
                callthis(mutation.addedNodes[i]);
            }

        })
    });
    observer.observe(document.getElementById("first"), { childList: true });


    var ele = document.createElement('div');
    ele.id = "second"

    document.getElementById("first").appendChild(ele);

</script>

</body>
</html>

1
গতবার আমি মিউটেশন ইভেন্টগুলি ভয়ানকভাবে সম্পাদন করেছি checked
ড্যানম্যান

7

নভেম্বর 2019 সালে, আমি একটি (প্রকল্পিত) তৈরি করতে একটি উপায় প্রার্থনা করছি onparse EventListenerজন্য <elements>যা গ্রহণ না onload

(অনুমানমূলক) onparse EventListenerঅবশ্যই কোনও উপাদানকে বিশ্লেষণ করার সময় শুনতে পারা উচিত ।


তৃতীয় প্রচেষ্টা (এবং সংজ্ঞা সমাধান)

আমি নীচের দ্বিতীয় প্রয়াসে বেশ খুশি ছিলাম , তবে এটি কেবলমাত্র আমার কাছে আঘাত পেয়েছিল যে আমি দর্জি দ্বারা তৈরি ইভেন্ট তৈরি করে কোডটি আরও ছোট এবং সহজতর করতে পারি:

let parseEvent = new Event('parse');

এটি এখনও সেরা সমাধান।

নীচের উদাহরণ:

  1. একটি দর্জি তৈরি parse Event
  2. একটি ফাংশন ঘোষণা করে (যা চালানো যেতে পারে) window.onload কোনও সময়ে বা যে কোনও সময় ) যা:
    • দস্তাবেজটিতে এমন কোনও উপাদান সন্ধান করে যা বৈশিষ্ট্যটি অন্তর্ভুক্ত করে data-onparse
    • সংযুক্ত করে parse EventListener প্রতিটি উপাদানের সাথে সংযুক্ত করে
    • parse Eventকার্যকর করার জন্য elements উপাদানগুলির প্রত্যেককে প্রেরণ করেCallback

কাজের উদাহরণ:

// Create (homemade) parse event
let parseEvent = new Event('parse');

// Create Initialising Function which can be run at any time
const initialiseParseableElements = () => {

  // Get all the elements which need to respond to an onparse event
  let elementsWithParseEventListener = document.querySelectorAll('[data-onparse]');
  
  // Attach Event Listeners and Dispatch Events
  elementsWithParseEventListener.forEach((elementWithParseEventListener) => {

    elementWithParseEventListener.addEventListener('parse', updateParseEventTarget, false);
    elementWithParseEventListener.dataset.onparsed = elementWithParseEventListener.dataset.onparse;
    elementWithParseEventListener.removeAttribute('data-onparse');
    elementWithParseEventListener.dispatchEvent(parseEvent);
  });
}

// Callback function for the Parse Event Listener
const updateParseEventTarget = (e) => {
  
  switch (e.target.dataset.onparsed) {

    case ('update-1') : e.target.textContent = 'My First Updated Heading'; break;
    case ('update-2') : e.target.textContent = 'My Second Updated Heading'; break;
    case ('update-3') : e.target.textContent = 'My Third Updated Heading'; break;
    case ('run-oQuickReply.swap()') : e.target.innerHTML = 'This <code>&lt;div&gt;</code> is now loaded and the function <code>oQuickReply.swap()</code> will run...'; break;
  }
}

// Run Initialising Function
initialiseParseableElements();

let dynamicHeading = document.createElement('h3');
dynamicHeading.textContent = 'Heading Text';
dynamicHeading.dataset.onparse = 'update-3';

setTimeout(() => {

  // Add new element to page after time delay
  document.body.appendChild(dynamicHeading);

  // Re-run Initialising Function
  initialiseParseableElements();

}, 3000);
div {
  width: 300px;
  height: 40px;
  padding: 12px;
  border: 1px solid rgb(191, 191, 191);
}

h3 {
position: absolute;
top: 0;
right: 0;
}
<h2 data-onparse="update-1">My Heading</h2>
<h2 data-onparse="update-2">My Heading</h2>
<div data-onparse="run-oQuickReply.swap()">
This div hasn't yet loaded and nothing will happen.
</div>


দ্বিতীয় প্রচেষ্টা

প্রথম প্রচেষ্টা নিচে (উপর ভিত্তি করে @JohnWilliams'উজ্জ্বল খালি ভাবমূর্তি হ্যাক ) ব্যবহৃত একটি হার্ডকোডেড<img /> এবং কাজ করেন।

আমি ভেবেছিলাম হার্ডকডযুক্তকে <img />পুরোপুরি সরিয়ে ফেলা সম্ভব হবে এবং এটি সনাক্ত করার পরে এটি কেবল গতিশীলভাবে সন্নিবেশ করানো উচিত, এমন একটি উপাদান যা কোনও onparseইভেন্টে আগুন লাগাতে পারে , এর মতো একটি বৈশিষ্ট্য:

data-onparse="run-oQuickReply.swap()"

দেখা যাচ্ছে, এটি সত্যিই খুব ভাল কাজ করে।

নীচের উদাহরণ:

  1. দস্তাবেজটিতে এমন কোনও উপাদান সন্ধান করে যা বৈশিষ্ট্যটি অন্তর্ভুক্ত করে data-onparse
  2. গতিশীলভাবে একটি উত্পন্ন করে <img src />এবং ডকুমেন্টে যুক্ত করে, তত্ক্ষণাত সেই উপাদানগুলির প্রতিটি পরে
  3. onerror EventListenerযখন রেন্ডারিং ইঞ্জিন প্রতিটি পার্স করে তখন আগুন জ্বলে<img src />
  4. কার্যকর করে Callback এবং<img src /> ডকুমেন্ট থেকে গতিশীলভাবে উত্পন্ন যে অপসারণ

কাজের উদাহরণ:

// Get all the elements which need to respond to an onparse event
let elementsWithParseEventListener = document.querySelectorAll('[data-onparse]');

// Dynamically create and position an empty <img> after each of those elements 
elementsWithParseEventListener.forEach((elementWithParseEventListener) => {

  let emptyImage = document.createElement('img');
  emptyImage.src = '';
  elementWithParseEventListener.parentNode.insertBefore(emptyImage, elementWithParseEventListener.nextElementSibling);
});

// Get all the empty images
let parseEventTriggers = document.querySelectorAll('img[src=""]');

// Callback function for the EventListener below
const updateParseEventTarget = (e) => {

  let parseEventTarget = e.target.previousElementSibling;
  
  switch (parseEventTarget.dataset.onparse) {

    case ('update-1') : parseEventTarget.textContent = 'My First Updated Heading'; break;
    case ('update-2') : parseEventTarget.textContent = 'My Second Updated Heading'; break;
    case ('run-oQuickReply.swap()') : parseEventTarget.innerHTML = 'This <code>&lt;div&gt;</code> is now loaded and the function <code>oQuickReply.swap()</code> will run...'; break;
  }
  
  // Remove empty image
  e.target.remove();
}

// Add onerror EventListener to all the empty images
parseEventTriggers.forEach((parseEventTrigger) => {
  
  parseEventTrigger.addEventListener('error', updateParseEventTarget, false);
  
});
div {
  width: 300px;
  height: 40px;
  padding: 12px;
  border: 1px solid rgb(191, 191, 191);
}
<h2 data-onparse="update-1">My Heading</h2>
<h2 data-onparse="update-2">My Heading</h2>
<div data-onparse="run-oQuickReply.swap()">
This div hasn't yet loaded and nothing will happen.
</div>


প্রথম প্রচেষ্টা

আমি @JohnWilliams' <img src>হ্যাক (এই পৃষ্ঠায়, 2017 থেকে) তৈরি করতে পারি - যা এখন পর্যন্ত আমি সবচেয়ে ভাল পদ্ধতির মুখোমুখি হয়েছি।

নীচের উদাহরণ:

  1. onerror EventListenerযখন রেন্ডারিং ইঞ্জিনটি বিশ্লেষণ করে তখন আগুন জ্বলে<img src />
  2. সম্পাদন করে Callback এবং<img src /> দস্তাবেজ থেকে মুছে ফেলা

কাজের উদাহরণ:

let myHeadingLoadEventTrigger = document.getElementById('my-heading-load-event-trigger');

const updateHeading = (e) => {

  let myHeading = e.target.previousElementSibling;
  
  if (true) { // <= CONDITION HERE
    
    myHeading.textContent = 'My Updated Heading';
  }
  
  // Modern alternative to document.body.removeChild(e.target);
  e.target.remove();
}

myHeadingLoadEventTrigger.addEventListener('error', updateHeading, false);
<h2>My Heading</h2>
<img id="my-heading-load-event-trigger" src />



@DavidBradshaw - তুমি এটা বিশ্বাস করব না, কিন্তু আমি মনে হয় আমি করেছি আসলে কর্কশ। উপরের উত্তরের শীর্ষে দ্বিতীয় প্রচেষ্টা দেখুন ।
রাউনিন

1
@ ডেভিড ব্র্যাডশাউ - এটি স্ক্র্যাচ করুন। আমি তৃতীয়বার চেষ্টা করেছি । এটিই এর চূড়ান্ত সমাধান।
রাউনিন

সম্ভবত সংস্করণ 3
ডেভিড ব্র্যাডশ

6

একটি আইফ্রেম ব্যবহার করুন এবং এটি লুকান যদি আইফ্রেমে বডি ট্যাগের মতো কাজ করে

<!DOCTYPE html>
<html>
<body>

<iframe style="display:none" onload="myFunction()" src="http://www.w3schools.com"></iframe>
<p id="demo"></p>

<script>
function myFunction() {
    document.getElementById("demo").innerHTML = "Iframe is loaded.";
}
</script>

</body>
</html>

6

এইচটিএমএল (টেমপ্লেট উদাহরণ) এর একটি অংশ সন্নিবেশ করার পরে আমার কিছু প্রাথমিক কোড চালানো দরকার ছিল এবং অবশ্যই আমার কোডটিতে অ্যাক্সেস নেই যা টেমপ্লেটটি পরিচালনা করে এবং ডিওএম সংশোধন করে। একই ধারণাটি এইচটিএমএল উপাদান সন্নিবেশ করে ডিওএমের যে কোনও আংশিক সংশোধন করার জন্য ধারণ করে, সাধারণত এ<div>

কিছুক্ষণ আগে, আমি একটিতে প্রায় অদৃশ্য <img>থাকা অ্যানলোড লোড ইভেন্টটি দিয়ে একটি হ্যাক করেছি <div>, কিন্তু আবিষ্কার করেছি যে একটি স্কোপড, খালি শৈলীটিও এটি করবে:

<div .... >
<style scoped="scoped" onload="dosomethingto(this.parentElement);" >   </style>
.....
</div>

আপডেট (জুলাই 15 2017) - <style>আইই এর শেষ সংস্করণে ওলোডটি সমর্থিত নয়। এজ এটিকে সমর্থন করে তবে কিছু ব্যবহারকারী এটিকে আলাদা ব্রাউজার হিসাবে দেখেন এবং আইইয়ের সাথে লেগে থাকেন। <img>উপাদান সমস্ত ব্রাউজার জুড়ে আরও ভালো কাজ মনে হয়।

<div...>
<img onLoad="dosomthing(this.parentElement);" src="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==" />
...
</div>

চিত্রটির ভিজ্যুয়াল এফেক্ট এবং রিসোর্সের ব্যবহার হ্রাস করতে, একটি ইনলাইন সিআরসি ব্যবহার করুন যা এটি ছোট এবং স্বচ্ছ রাখে।

একটি মন্তব্য আমি অনুভব করি যে <script>এটির ব্যবহার সম্পর্কে আমার জানা দরকার <div>যে স্ক্রিপ্টটি নিকটে রয়েছে তা নির্ধারণ করা কতটা কঠিন especially আমি ভেবেছিলাম উত্তরটি ডকুমেন্ট.কন্ট্রনস্ক্রিপ্ট হতে পারে তবে এটি সর্বজনীনভাবে সমর্থিত নয়। কোনও <script>উপাদান নির্ভরযোগ্যভাবে তার নিজস্ব ডোম অবস্থান নির্ধারণ করতে পারে না; 'এটি'র একটি উল্লেখ মূল উইন্ডোটির দিকে নির্দেশ করে এবং কোনও লাভ হয় না।

আমি বিশ্বাস করি যে <img>বোকা হয়েও কোনও উপাদান ব্যবহার করার দরকার নেই । এটি ডিওএম / জাভাস্ক্রিপ্ট ফ্রেমওয়ার্কের একটি গর্ত হতে পারে যা প্লাগিং ব্যবহার করতে পারে।


3

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

আপনি এর জন্য একটি মিউটেশনঅবসভার ব্যবহার করতে পারেন :

const trackElement = element => {
  let present = false;
  const checkIfPresent = () => {
    if (document.body.contains(element)) {
      if (!present) {
        console.log('in DOM:', element);
      }
      present = true;
    } else if (present) {
      present = false;
      console.log('Not in DOM');
    }
  };

  const observer = new MutationObserver(checkIfPresent);
  observer.observe(document.body, { childList: true });
  checkIfPresent();

  return observer;
};

const element = document.querySelector('#element');
const add = () => document.body.appendChild(element);
const remove = () => element.remove();

trackElement(element);
<button onclick="add()">Add</button>
<button onclick="remove()">Remove</button>

<div id="element">Element</div>


2

এই ধরণের জিনিসটির জন্য আমি YUI3 লাইব্রেরিটি সত্যিই পছন্দ করি।

<div id="mydiv"> ... </div>

<script>
YUI().use('node-base', function(Y) {
  Y.on("available", someFunction, '#mydiv')
})

দেখুন: http://developer.yahoo.com/yui/3/event/# উপলভ্য


9
একককে আবদ্ধ করার জন্য জেএসের বেশ বড় একটি ব্লব পৃষ্ঠাটিতে ফেলার জন্য onload
meagar

1
@ মিগর - ঠিক আছে, যদিও আমি এটি ক্রমবর্ধমানভাবে বিরল দেখতে পাচ্ছি যে আমি কোনও পৃষ্ঠায় মাত্র দু'ত তিনটি সাধারণ জেএস জিনিসগুলি করি। ক্রস ব্রাউজারের সামঞ্জস্যতা সম্পর্কে চিন্তিত করা আমার বাদামও চালায়।
mjhm

0

আমি জাভাস্ক্রিপ্ট এবং জ্যাকোয়ারি শিখছি এবং সমস্ত উত্তর দিয়ে যাচ্ছিলাম, ডিভ উপাদানটি লোড করার জন্য জাভাস্ক্রিপ্ট ফাংশন কল করার সময় আমি একই সমস্যার মুখোমুখি হয়েছিলাম। আমি চেষ্টা করেছি $('<divid>').ready(function(){alert('test'})এবং এটি আমার পক্ষে কাজ করেছে। আমি জানতে চাই ডিভি এলিমেন্টে যেভাবে জিকিউরি সিলেক্টরটি ব্যবহার করেছিলাম তাতে লোড কল করার জন্য এই ভাল উপায়।

ধন্যবাদ


0

যেমনটি বলা হয়েছে, আপনি ডিআইভিতে অনাবলম্বন ইভেন্টটি বডি ট্যাগের আগে ব্যবহার করতে পারবেন না।

তবে আপনার যদি এক ফুটার ফাইল থাকে এবং এটি অনেক পৃষ্ঠায় অন্তর্ভুক্ত করে। আপনি যে ডিভিটি চান তা সেই পৃষ্ঠায় প্রদর্শিত হয় কিনা তা আগে যাচাই করা ভাল, সুতরাং কোডটি যে পৃষ্ঠাগুলিতে যে ডিআইভি থাকে না তা দ্রুত চালিত হয় এবং আপনার অ্যাপ্লিকেশনের জন্য কিছু সময় বাঁচায় এই কোডটি কার্যকর করা হয় না।

সুতরাং আপনাকে সেই ডিআইভিকে একটি আইডি দেওয়া এবং করতে হবে:

var myElem = document.getElementById('myElementId');
if (myElem !== null){ put your code here}

0

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

তারপরে আমি চারপাশের কাজ হিসাবে এটি নিয়ে এসেছি।

<body>

<span onmouseover="window.scrollTo(0, document.body.scrollHeight);" 
onmouseout="window.scrollTo(0, document.body.scrollHeight);">

<div id="">
</div>

<a href="" onclick="window.scrollTo(0, document.body.scrollHeight);">Link to open Div</a>

</span>
</body>

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


0

আপনি এটির মতো লোড না হওয়া পর্যন্ত এটি পরীক্ষা করার জন্য একটি বিরতি ব্যবহার করতে পারেন: https://codepen.io/pager/pen/MBgGGM

let checkonloadDoSomething = setInterval(() => {
  let onloadDoSomething = document.getElementById("onloadDoSomething");
  if (onloadDoSomething) {
    onloadDoSomething.innerHTML="Loaded"
    clearInterval(checkonloadDoSomething);
  } else {`enter code here`
    console.log("Waiting for onloadDoSomething to load");
  }
}, 100);

0

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

একইভাবে আপনি এটি (সমস্ত) ডিভ দিয়ে কিছু করার জন্য ব্যবহার করতে পারেন বা কেবলমাত্র একটি নির্দিষ্ট করা থাকলে, এর মতো:

document.addEventListener("DOMContentLoaded", function() {
    var divs = document.querySelectorAll('div'); // all divs
    var mydiv = document.getElementById('myDiv'); // only div#myDiv
    divs.forEach( div => {
        do_something_with_all_divs(div);
    });
    do_something_with_mydiv(mydiv);
});

আপনার যদি সত্যই ডিওএম লোড হওয়ার পরে লোড হওয়া একটি ডিভ দিয়ে কিছু করা দরকার, যেমন একটি এজাক্স কল করার পরে আপনি খুব সহায়ক হ্যাক ব্যবহার করতে পারেন যা বুঝতে পারবেন যে এটি আপনি খুঁজে পাবেন ... সাথে কাজ করে- উপাদান-সামনে-ডোম-is-প্রস্তুত ... । এটি বলে যে "ডিওএম প্রস্তুত হওয়ার আগে" তবে এটি এজাক্স সন্নিবেশ বা জেএস-অ্যাপেন্ডচিল্ড-কোনও ডিভের যাই হোক না কেন পরে একইভাবে ব্রিল্যান্ট কাজ করে। কোডটি এখানে আমার প্রয়োজন অনুসারে কিছু ছোট পরিবর্তন রয়েছে।

CSS

.loaded { // I use only class loaded instead of a nodename
    animation-name: nodeReady;
    animation-duration: 0.001s;
}

@keyframes nodeReady {  
    from { clip: rect(1px, auto, auto, auto); }
    to { clip: rect(0px, auto, auto, auto); }  
}

জাভাস্ক্রিপ্ট

document.addEventListener("animationstart", function(event) {
    var e = event || window.event;
    if (e.animationName == "nodeReady") {
        e.target.classList.remove('loaded');
        do_something_else();
    }
}, false);

0

আপনি যখন সার্ভার থেকে কিছু এইচটিএমএল লোড করেন এবং এটি ডিওএম ট্রিতে সন্নিবেশ করান DOMSubtreeModifiedতবে আপনি তা হারাতে পারেন তবে ব্যবহার করতে পারেন - যাতে আপনি MutationObserverসরাসরি লোডএলমেন্ট ফাংশনের ভিতরে নতুন সামগ্রী ব্যবহার করতে পারেন বা সনাক্ত করতে পারেন যাতে আপনাকে ডিওএম ইভেন্টগুলির জন্য অপেক্ষা করতে হবে না will


0

আপনি নীচের মত একটি ইভেন্ট শ্রোতা সংযুক্ত করতে পারেন। এটি যখনই ডিভি নির্বাচনকারী #my-idসম্পূর্ণরূপে ডিওএম-এ লোড করে তখন এটি ট্রিগার করবে ।

$(document).on('EventName', '#my-id', function() {
 // do something
});

এই ক্ষেত্রে ইভেন্টের নামটি 'লোড' বা 'ক্লিক' হতে পারে

https://api.jquery.com/on/#on-events-selector-data-handler


-1

পরিবর্তে বডি.অনলোড ইভেন্টটি ব্যবহার করুন, হয় অ্যাট্রিবিউট ( <body onload="myFn()"> ...) এর মাধ্যমে অথবা জাভাস্ক্রিপ্টে কোনও ইভেন্টকে আবদ্ধ করে। এটি jQuery এর সাথে অত্যন্ত সাধারণ :

$(document).ready(function() {
    doSomething($('#myDiv'));
});

জাভাস্ক্রিপ্ট খাঁটি এবং
জ্যাকোয়ারি

-3

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

document.getElementById("div").onload = alert("This is a div.");
<div id="div">Hello World</div>

এটিও চেষ্টা করে দেখুন। আপনি সরাতে প্রয়োজন .থেকে oQuickReply.swap()ফাংশন কাজ করা।

document.getElementById("div").onload = oQuickReplyswap();
function oQuickReplyswap() {
alert("Hello World");
}
<div id="div"></div>


এটি কাজ করে বলে মনে হচ্ছে, তবে এটি কেবল alert("This is a div.");তখনই বলা হয় যখন এই লাইনটি কার্যকর করা হয় এবং ফলাফলটি (যা হয় undefined) বরাদ্দ করা হয় div.onload। যা সম্পূর্ণ অর্থহীন।
ফ্রেডেরিক লাইটেনবার্গার

-4

আপনি ডিভের উপর ইভেন্টের লোড যোগ করতে পারবেন না, তবে আপনি ডকুমেন্ট লোডে অনকিডাউন এবং অনকিডাউন ইভেন্টটি ট্রিগার করতে পারেন

$(function ()
{
  $(".ccsdvCotentPS").trigger("onkeydown");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.2.3/jquery.min.js"></script>

<div  onkeydown="setCss( );"> </div>`

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