Onload इवेंट को div एलिमेंट में कैसे जोड़े


231

आप किसी onloadईवेंट को एक तत्व में कैसे जोड़ते हैं ?

क्या में उपयोग कर सकता हूँ:

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

इसके लिए?


सबसे bodyबेहतरdiv
किंगराइडर

2
divतत्व "लोड" नहीं करते हैं।
एमएन

1
अब एक और अधिक प्रासंगिक जवाब है - शायद आप स्वीकार को संशोधित कर सकते हैं?
21

जवाबों:


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>। फ़े यदि आप <div>केवल तभी छिपाना चाहते हैं यदि जावास्क्रिप्ट सक्षम है लेकिन "चमकती" से बचें। दृश्यता का समय इस बात पर निर्भर करता है कि ब्राउज़र को सभी इनलाइन / बाहरी स्क्रिप्ट को लोड / पार्स करने की कितनी देर है।
मैगुट जूल

क्या यह एक एंटी-पैटर्न है, जिसमें सभी js को अपनी फ़ाइल के अंदर रखना बेहतर है? जब कुछ तत्वों को दस्तावेज़ में लोड किया जाता है, तो क्या चयनात्मक रूप से चलाने का एक तरीका है?
रेयान वाल्टन 20

1
यह एक विरोधी पैटर्न नहीं है, लेकिन आप आमतौर पर डोम के लोड होने का इंतजार करते हैं और फिर सभी जेएस सामान करते हैं।
दानमेन

1
इस लिंक बाहर यहाँ किसी को भी है कि इस सवाल का जवाब है के लिए फेंक w3schools.com/tags/ev_onload.asp - सभी HTML तत्वों है कि वर्तमान में समर्थनonload
ब्रैंडन Benefield

यह उत्तर अब प्रासंगिक नहीं है। यहाँ
mplungjan

74

onloadघटना केवल पर इस्तेमाल किया जा सकता document(body)ही, फ्रेम्स, छवियाँ, और लिपियों। दूसरे शब्दों में, इसे केवल शरीर और / या प्रत्येक बाहरी संसाधन से जोड़ा जा सकता है । Div एक बाहरी संसाधन नहीं है और इसे शरीर के हिस्से के रूप में लोड किया गया है, इसलिए यह onloadघटना वहां लागू नहीं होती है।


18
न केवल शरीर तत्व में, आप इसका उपयोग छवि के साथ कर सकते हैं और उदाहरण के लिए iframe, दूसरों के बीच में। w3schools.com/jsref/event_onload.asp
जो

2
यह ध्यान देने योग्य है कि इनलाइन स्क्रिप्ट बाहरी संसाधन नहीं हैं, और इसलिए बिना HTML विशेषता के onloadकिसी पर काम नहीं करता है (मैं इनलाइन स्क्रिप्ट में इस सलाह का उपयोग करने की कोशिश कर रहा था, और पाया कि यह काम नहीं कर रहा था)<script>src
gog

64

आप किसी IMG तत्व पर स्वचालित रूप से onerror का उपयोग करके कुछ js ट्रिगर कर सकते हैं, और कोई src नहीं।

<img src onerror='alert()'>

4
प्रतिभाशाली! कोणीय से टाइपस्क्रिप्ट को ट्रिगर करने के लिए भी इस्तेमाल किया जा सकता है: img src (error) = "function ()" />
ब्रायन रिचर्डसन

1
यह एक शानदार तरीका है। कृपया अपने समाधान का मेरा विस्तार यहाँ देखें: stackoverflow.com/questions/4057236/…
Rounin

कैनीयूज़? I
पेसियर

28

onload घटना यह केवल नीचे सूचीबद्ध कुछ टैग के साथ समर्थन करता है।

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

यहाँ onload घटना के लिए संदर्भ


17

इसे इस्तेमाल करे! और कभी भी div पर दो बार ट्रिगर का उपयोग न करें!

आप डिव टैग से पहले कॉल करने के लिए फ़ंक्शन को परिभाषित कर सकते हैं।

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

डेमो: jsfiddle


Jsfiddle के ऊपर jQuery लोडर नहीं है - और काम नहीं करता है।
आरिफ बुरहान

@ आरिफ बुरहान मुझे नहीं मिला। मैं JQuery (बढ़त) लोड करता हूं। क्या आप फिर से जाँच कर सकते हैं? मैं मोबाइल का उपयोग करके भी "हैलो वर्ल्ड" देख सकता हूं।
कुओपप

@ Kuofp उस फिडल में वास्तव में हैंडलर नहीं होते हैं जब उनके लक्षित तत्वों को लोड किया जाता है। यह सिर्फ उन तत्वों की खोज करने के लिए jquery का उपयोग करता है जिनके पास एक विशेषता है (आपके मामले में onload) और फिर उन कार्यों को कॉल करता है। स्क्रिप्ट भी काम करता है अगर आप के अलावा कुछ करने के लिए विशेषता बदली onloadजैसे jsfiddle.net/mrszgbxh
Trindaz

1
@ वृंदाज बिल्कुल! इसे दूसरे तरीके से रखने के लिए, स्क्रिप्ट ऑनलोड घटना की तरह काम करती हैं। एक टिप्पणी छोड़ने के लिए धन्यवाद!
कुओफ़्प

10

मैं बस यहाँ जोड़ना चाहता हूँ कि यदि कोई div के लोड इवेंट पर किसी फ़ंक्शन को कॉल करना चाहता है और आप jQuery (मेरे मामले में संघर्ष के कारण) का उपयोग नहीं करना चाहते हैं, तो बस सभी HTML कोड या किसी भी के बाद एक फ़ंक्शन को कॉल करें अन्य कोड आपने फ़ंक्शन कोड सहित लिखा है और बस एक फ़ंक्शन को कॉल करें।

/* 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>

क्या आप इस प्रकार एक से अधिक फ़ंक्शन जोड़ सकते हैं? </ body> टैग से ठीक पहले html डॉक्यूमेंट के अंत में? यदि हाँ, तो क्या वह आदेश दिया गया है जिसमें वे लिखित मामले हैं?
नियो

हां, आप एक से अधिक फ़ंक्शन जोड़ सकते हैं और ऑर्डर उसके सीधे सादे (वेनिला) जावास्क्रिप्ट के लिए मायने नहीं रखेगा।
देव_खान ५'१ at को _:

7

नीचे दिए गए नमूना कोड को प्रभावी तरीके से समस्या को हल करने के लिए हम MutationObserver का उपयोग कर सकते हैं

<!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
पिछली बार मैंने उत्परिवर्तन घटनाओं की बहुत अच्छी तरह से जाँच की है।
डैनमैन

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उन तत्वों में से प्रत्येक को निष्पादित करने के लिए डिस्पैच करता है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'प्रतिभाशाली खाली छवि हैक ) का इस्तेमाल किया एक hardcoded<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

एक iframe का उपयोग करें और इसे छिपाएं iframe बॉडी टैग की तरह काम करता है

<!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

Html (टेम्प्लेट इंस्टेंस) के कुछ अंश डालने के बाद मुझे कुछ इनिशियलाइज़ेशन कोड चलाने की आवश्यकता थी, और निश्चित रूप से मेरे पास उस कोड तक पहुंच नहीं थी जो टेम्पलेट में हेरफेर करता है और DOM को संशोधित करता है। एक ही विचार html तत्व के सम्मिलन द्वारा DOM के किसी भी आंशिक संशोधन के लिए है, आमतौर पर a<div>

कुछ समय पहले, मैं एक लगभग अदृश्य के ऑनलोड घटना के साथ एक हैक किया था <img>एक में निहित <div>है, लेकिन पता चला कि एक scoped, खाली शैली भी करना होगा:

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

अद्यतन (जुलाई 15 2017) - <style>आईई के अंतिम संस्करण में ऑनलोड का समर्थन नहीं किया गया है। एज इसका समर्थन करता है, लेकिन कुछ उपयोगकर्ता इसे एक अलग ब्राउज़र के रूप में देखते हैं और IE के साथ चिपके रहते हैं। यह <img>तत्व सभी ब्राउज़रों में बेहतर काम करता है।

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

छवि के दृश्य प्रभाव और संसाधन उपयोग को कम करने के लिए, एक इनलाइन src का उपयोग करें जो इसे छोटा और पारदर्शी रखता है।

एक टिप्पणी मुझे लगता है कि मुझे इस बारे में बनाने की ज़रूरत <script>है कि यह निर्धारित करना कितना कठिन है <div>कि स्क्रिप्ट पास है, विशेष रूप से टेम्प्लेटिंग में जहां आप प्रत्येक उदाहरण में एक समान आईडी नहीं रख सकते हैं जो टेम्पलेट उत्पन्न करता है। मुझे लगा कि उत्तर document.currentScript हो सकता है, लेकिन यह सार्वभौमिक रूप से समर्थित नहीं है। एक <script>तत्व अपने स्वयं के डोम स्थान को मज़बूती से निर्धारित नहीं कर सकता है; 'यह' का संदर्भ मुख्य विंडो की ओर इशारा करता है, और कोई मदद नहीं करता है।

मेरा मानना ​​है कि <img>नासमझ होने के बावजूद एक तत्व का उपयोग करने के लिए व्यवस्थित होना आवश्यक है । यह DOM / जावास्क्रिप्ट फ्रेमवर्क में एक छेद हो सकता है जो प्लगिंग का उपयोग कर सकता है।


3

चूंकि onloadघटना केवल कुछ तत्वों पर समर्थित है, इसलिए आपको वैकल्पिक विधि का उपयोग करना होगा।

आप इसके लिए MutationObserver का उपयोग कर सकते हैं :

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/#onavailable


9
यह एक एकल बंधन के लिए पृष्ठ पर डंप करने के लिए JS की काफी बड़ी बूँद है onload
meagar

1
@meagar - ठीक है, हालांकि मुझे यह बहुत ही दुर्लभ लग रहा है कि मैं एक पृष्ठ पर केवल दो या तीन सरल जेएस चीजें करता हूं। क्रॉस ब्राउज़र संगतता के बारे में चिंता करना मुझे पागल कर देता है।
mjhm

0

मैं जावास्क्रिप्ट और jquery सीख रहा हूं और सभी उत्तर से गुजर रहा हूं, मैंने उसी मुद्दे का सामना किया जब लोडिंग तत्व के लिए जावास्क्रिप्ट फ़ंक्शन को कॉल करना। मैंने कोशिश की $('<divid>').ready(function(){alert('test'})और यह मेरे लिए काम कर गया। मैं यह जानना चाहता हूं कि जिस तरह से मैंने jquery चयनकर्ता का उपयोग किया था उसमें div तत्व पर onload कॉल करने का यह एक अच्छा तरीका है।

धन्यवाद


0

जैसा कि सभी ने कहा, आप इसके बजाय DIV पर onLoad ईवेंट का उपयोग नहीं कर सकते, लेकिन यह बॉडी टैग से पहले किया जाता है।

लेकिन अगर आपके पास एक पाद फ़ाइल है और इसे कई पृष्ठों में शामिल करें। बेहतर है कि पहले जांच लें कि आप जो डिव चाहते हैं, वह उस पृष्ठ पर प्रदर्शित है, इसलिए कोड उन पृष्ठों में निष्पादित नहीं होता है, जिनमें यह नहीं है कि DIV इसे तेजी से लोड करने के लिए और आपके आवेदन के लिए कुछ समय बचा सकता है।

इसलिए आपको उस DIV को एक आईडी और देनी होगी:

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>

मैंने डिव को एक स्पैन के अंदर रखा और स्पैन को दो इवेंट दिए, एक माउसओवर और एक माउसआउट। फिर उस डिव के नीचे, मैंने डिव को खोलने के लिए एक लिंक रखा, और उस लिंक को ऑनक्लिक के लिए एक इवेंट दिया। पृष्ठ को नीचे की ओर स्क्रॉल करने के लिए सभी घटनाएँ बिल्कुल एक जैसी होती हैं। अब जब Div को खोलने के लिए बटन पर क्लिक किया जाता है, तो पृष्ठ भाग नीचे कूद जाएगा, और Div बटन के ऊपर खुल जाएगा, जिससे माउसओवर और माउसआउट ईवेंट स्क्रॉल डाउन स्क्रिप्ट को पुश करने में मदद करेंगे। तब उस समय माउस का कोई भी मूवमेंट स्क्रिप्ट को एक आखिरी बार धकेल देगा।


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 के बिना, शुद्ध जावास्क्रिप्ट। यह मूल रूप से DOM और लोड होने के बाद textareas के आकार परिवर्तन को लागू करने के लिए लिखा गया था।

उसी तरह से आप इसे (सभी) divs या केवल एक के साथ कुछ करने के लिए उपयोग कर सकते हैं, यदि निर्दिष्ट हो, जैसे:

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);
});

अगर आपको वास्तव में एक div के साथ कुछ करने की ज़रूरत है, तो DOM लोड होने के बाद लोड किया जाता है, जैसे anjax कॉल के बाद, आप एक बहुत ही उपयोगी हैक का उपयोग कर सकते हैं, जिसे समझना आसान है आप इसे पा लेंगे ... वर्किंग-के साथ- तत्वों पहले-डोम-है के लिए तैयार ... । यह कहता है, "DOM तैयार होने से पहले", लेकिन यह उसी तरह से शानदार काम करता है, जैसे कि ajax प्रविष्टि या js-appendChild- एक डिव का। यहाँ कोड है, मेरी जरूरतों के लिए कुछ छोटे बदलावों के साथ।

सीएसएस

.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

जब आप सर्वर से कुछ html लोड करते हैं और इसे DOM ट्री में डालते हैं, तो आप DOMSubtreeModifiedइसका उपयोग कर सकते हैं लेकिन इसे हटा दिया जाता है - इसलिए आप MutationObserverसीधे loadElement फ़ंक्शन के अंदर नई सामग्री का उपयोग कर सकते हैं या इसका पता लगा सकते हैं, इसलिए आपको DOM ईवेंट की प्रतीक्षा करने की आवश्यकता नहीं होगी


0

आप नीचे के रूप में एक घटना श्रोता संलग्न कर सकते हैं। जब भी div चयनकर्ता #my-idलोड डोम पर पूरी तरह से लोड हो जाएगा तो यह ट्रिगर हो जाएगा ।

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

घटना का मामला EventName 'लोड' या 'क्लिक' हो सकता है

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


-1

इसके बजाय body.onload घटना का उपयोग करें, या तो विशेषता के माध्यम से ( <body onload="myFn()"> ...) या जावास्क्रिप्ट में एक घटना को बांधकर। यह jQuery के साथ बेहद सामान्य है :

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

जावास्क्रिप्ट शुद्ध और नहीं jquery, चेक टैग;)
KingRider

-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

आप div पर ईवेंट ऑनलोड नहीं जोड़ सकते, लेकिन आप दस्तावेज़ लोड पर ऑनकीडाउन और ट्रिगर ऑनकडाउन इवेंट जोड़ सकते हैं

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

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.