25

में आईई 8 के साथ फायरिंग नहीं कर रहा है। मैं अपने पृष्ठों को आईई 8 के साथ सही तरीके से काम करने की कोशिश कर रहा हूं, मुझे यहां से पता चला: http://www.masykur.web.id/post/How-to-Make-Our-Website-to-be-Ready-for-IE8.aspx कि, मेरा पृष्ठ एक्सएचटीएमएल 1.0 अनुपालन और कम से कम होना चाहिए सीएसएस 2.1 अनुपालन, मैंने अपना पेज और सीएसएस केवल कुछ चेतावनियों के साथ अनुपालन किया, लेकिन अभी भी window.onload() फायरिंग नहीं है। क्या किसी को इस समस्या का सामना करना पड़ा?window.onload() पहले शॉट

<!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" lang="en" xml:lang="en"> 
    <head> 
     <meta http-equiv="X-UA-Compatible" content="IE=8"/> 
     <title>Testing</title> 
     <link rel="stylesheet" href="test.css" type="text/css"></link> 
     <script type="text/javascript" src="login.js"></script> 
     <script type="text/javascript" src="common.js"></script> 
     <script type="text/javascript"> 
      window.onload = function() 
      { 
          // Not coming here at all on first shot 
      } 
     </script> 
    </head> 
    <body> 
    . 
    . 
    . 

हालांकि पेज ताज़ा यह काम कर रहा है:

यहाँ कोड का टुकड़ा है।

क्या मुझे यहां कुछ याद आ रही है?

अद्यतन:

इस समस्या को बनाया, अपने काम के ठीक अक्षम करने के बाद आईई एडऑन में से एक। आपके समय और उत्तरों के लिए धन्यवाद :)

+0

यदि आप फाइल सिस्टम से स्थानीय रूप से फ़ाइल खोल रहे हैं, तो IE सुरक्षा की कोशिश कर रहा है आप सुरक्षा मुद्दों से? –

+0

हां, मैं इसके बारे में शिकायत नहीं कर रहा हूं। लेकिन एक खिड़की के साथ एक साधारण एचटीएमएल फ़ाइल।ऑनलोड आईई 8 के साथ काम नहीं कर रहा है, अगर मैं अपाचे जैसे वेबसर्वर का उपयोग करता हूं और मैं यह समझने में सक्षम नहीं हूं कि क्यों! – Manohar

+1

@ मानोहर क्या आप कह सकते हैं कि कौन सा एडन समस्या कर रहा था? मुझे आईई 9 के साथ एक ही समस्या का सामना करना पड़ रहा है। –

उत्तर

1

आपकी सभी सामग्री लोड होने के बाद ऑनलोड आग (बाहरी छवियों आदि सहित)। यह संभव है कि उन संसाधनों को पहले जाने पर लोड करने में लंबा समय लगे (वे कैश किए जाने से पहले)। एक अन्य संभावना आपके कोड में एक त्रुटि है जो केवल आपकी स्क्रिप्ट को रोक रहा है क्योंकि आईई को प्रभावित करती है (लेकिन केवल पहली बार अजीब है)।

+0

पहली संभावना से इनकार किया गया है, अधिभार मैं केवल जावास्क्रिप्ट फ़ंक्शन को कॉल कर रहा हूं जो एक संख्या निर्धारित करता है। मैं अपने कोड में किसी भी त्रुटि को देख रहा हूं, मैंने अभी एक नमूना कोड लिखा है जो आईई 8 में ऑनलोड के साथ ठीक काम कर रहा है (हालांकि ऑनलोड सामग्री इस त्रुटि से अवरुद्ध है: 'आपकी सुरक्षा की सुरक्षा में मदद के लिए, इंटरनेट एक्सप्लोरर ने इस वेबसाइट को चलने से प्रतिबंधित कर दिया है स्क्रिप्ट ... 'हर बार, मुझे इसे काम करने के लिए "अनुमति दें")। – Manohar

+0

मुझे पता चला कि अगर अपाचे पेज को प्रतिपादित कर रहा है, तो ऑनलोड फायरिंग नहीं है। मेरे पास एक नमूना कोड है जो इसे प्रदर्शित कर सकता है। – Manohar

+0

मुझे लगता है कि आप गलत समझ सकते हैं। इससे कोई फ़र्क नहीं पड़ता कि आपका ऑनलोड हैंडलर वास्तव में क्या करता है, इससे कोई फर्क नहीं पड़ता कि यह _until_ भी नहीं चलाएगा प्रत्येक पृष्ठ तत्व "लोड" (केवल HTML, लेकिन बाहरी सीएसएस, जेएस और छवियों) नहीं है। यदि आईई बाहरी संसाधन डाउनलोड करने या इनलाइन जेएस चलाने में फंस रहा है तो यह "लोड नहीं हुआ" है और आपकी स्क्रिप्ट आग नहीं जाएगी। आपके पास अपने कोड में कहीं लूप हो सकता है जो "लोडिंग" को पूरा करने से रोक रहा है। – SpliFF

0

यदि आप अपाचे बनाम एक अन्य वेब सर्वर (आईआईएस?) का उपयोग करके अलग-अलग परिणाम प्राप्त कर रहे हैं और IE8 का उपयोग करके अंतिम परिणाम की तुलना कर रहे हैं, तो भिन्नता सामग्री प्रकार हेडर में भेजी जा रही है। अपने मंच के लिए wget उपयोगिता प्राप्त करें और उत्पादित हेडर देखें। यदि आप विंडोज़ पर हैं, तो Portable Apps version of the GUI wget बहुत अच्छा है।

+0

मैंने आईआईएस में कोशिश नहीं की है, मैंने केवल अपाचे में कोशिश की है और यह मेरे लिए काम नहीं कर रहा है, मैंने window.onload = नया फ़ंक्शन ("अलर्ट ('!');") का उपयोग करने की कोशिश की; यह भी आईई -8 में फायरिंग नहीं है। – Manohar

0

निम्नलिखित कोड मेरे लिए काम करता है। जब मैं फ़ायरफ़ॉक्स में पेज लोड करता हूं तो मैं तुरंत अलर्ट देखता हूं। जब मैं पहली बार आईई 8 में पेज लोड करता हूं तो यह मुझे सक्रिय सामग्री के बारे में चेतावनी देता है। अगर मैं अवरुद्ध सामग्री की अनुमति देता हूं तो यह मुझे पुष्टि करने के लिए कहता है, जो मैं करता हूं। फिर चेतावनी अपेक्षित के रूप में प्रकट होता है। यदि यह आपके लिए काम नहीं करता है, तो किसी भिन्न कंप्यूटर पर IE 8 आज़माएं या त्रुटियों की जांच के लिए अपने पृष्ठ में कोड को समाप्त करना प्रारंभ करें। आप एक बाइनरी खोज कर सकते हैं: पृष्ठ के पहले भाग को टिप्पणी करें और देखें कि क्या अलर्ट दिखाई देता है; अगर यह अभी भी नहीं करता है, तो पहले छमाही को बाहर निकालें और दूसरी छमाही पर टिप्पणी करें। जब तक आप इसे अपमानजनक कोड तक सीमित नहीं करते हैं तब तक दोहराएं। संयोग से आपको IE8 अनुपालन के लिए एक्सएचटीएमएल की आवश्यकता नहीं है। एचटीएमएल ठीक काम करता है और वास्तव में कुछ फायदे हैं।

<!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" lang="en" xml:lang="en"> 
    <head> 
    <meta http-equiv="X-UA-Compatible" content="IE=8"/> 
    <title></title> 
    <style type="text/css"> 
    </style> 
    <script type="text/javascript"> 
    window.onload=function() { alert('hello');}; 
    </script> 
    </head> 
    <body> 
    </body> 
</html> 
+0

यह वर्णन करता है जैसा कि आप वर्णन करते हैं कि अगर मैं आईई 8 के साथ एचटीएमएल फाइल को सही तरीके से खोलता हूं, लेकिन जब मैं एक ही फाइल को अपाचे में डालता हूं और सर्वर के माध्यम से एक्सेस करता हूं, तो ऑनलोड पहली बार फायरिंग नहीं होता है। कोड ब्लॉक को ऑनलोड में काम करने के लिए हर बार मैन्युअल रूप से रीफ्रेश करना होगा। मैंने अभी तक विभिन्न मशीनों में कोशिश नहीं की है। मैं यहां कोशिश करूँगा और अपडेट करूंगा। – Manohar

+0

मुझे संदेह है कि यह तब xhtml से संबंधित है। नियमित HTML का उपयोग करने का प्रयास करें। –

+0

मुझे जोड़ना चाहिए: यदि यह एक एक्सएचटीएमएल समस्या है, तो समाधान फ्रांसीसी कूपर का समाधान हो सकता है, जो जावास्क्रिप्ट के चारों ओर सीडीएटीए रैपर लगाएगा। –

3

यदि ऐसा होता है, तो आपके जावास्क्रिप्ट में कोई त्रुटि हो सकती है, उसके बाद कोई भी जावास्क्रिप्ट ठीक से काम नहीं करेगा।

login.js और common.js के संदर्भ को हटाने का प्रयास करें और अपने समस्याग्रस्त फ़ंक्शन के भीतर एक अलर्ट आज़माएं।

2

मेरे पास व्यक्तिगत रूप से परीक्षण करने के लिए IE8 नहीं है, लेकिन यह परीक्षण क्या करता है?

<!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" lang="en" xml:lang="en"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
<title>Test IE 8</title> 
<script type="text/javascript"> 
/* <![CDATA[ */ 
window.onload = function(){alert('Good morning!');} 
/* ]]> */ 
</script> 
</head> 
<body> 
<h1>Hello</h1> 
<body> 
</html> 

इस परीक्षण से काम करता है के रूप में उम्मीद करते हैं, तो अपने आंतरिक जावास्क्रिप्ट ब्लॉक के चारों ओर CDATA सा प्रयास करें।

और फिर, यदि यह अपेक्षा के अनुसार काम नहीं करता है, तो संभवत: बाहरी जावास्क्रिप्ट में कुछ ऐसा है जो आपके अधिभार को फायरिंग से रोकता है। पिछले पोस्टर ने इसका उल्लेख किया था। उस बिंदु पर, रास्ते को इंगित करने के लिए अपने त्रुटि कंसोल या डीबगर का प्रयास करें।

25

आईई कोशिश के लिए:

window.onload = new function() { alert('hello');}; 
+8

यह फ़ंक्शन को तुरंत नए दुष्प्रभाव के रूप में निष्पादित करता है। ऑब्जेक्ट सृजन के परिणाम पर ऑनलोड सेट हो जाता है! (नई वस्तु) –

9

यह एक बहुत पुराने धागा है, लेकिन मैं एक समाधान है कि दूसरों को मदद कर सकता है पाया।

मैं एक गतिशील इंजेक्शन स्क्रिप्ट के माध्यम से window.onload पर एक फ़ंक्शन जोड़ रहा था (वास्तव में उन संदर्भों के लिए बाहरी स्क्रिप्ट लोड की नकल करने के लिए जो इस संदर्भ में महत्वपूर्ण नहीं हैं)। जैसा कि इस पोस्ट में बताया गया है, IE8 के पहले लोड पर, window.onload आग नहीं लगेगा, लेकिन बाद की सभी कॉलें होंगी।

मुझे पता चला है कि अगर मैं एक आंतरिक स्क्रिप्ट के रूप में HTML फ़ाइल में रखते है, यह हर काम करेगा:

var windowOnload = window.onload || function() {}; 
window.onload = function() { windowOnload(); }; 

उपरोक्त सभी कोड है करता है "initializes" IE8 के window.onload भैया। मुझे संदेह है कि IE8 window.onload को पहली बार ट्रिगर करने में विफल रहता है अगर इसे बाहरी स्क्रिप्ट से कहा जाता है क्योंकि onload ईवेंट विंडो तक अभी तक संलग्न नहीं है (या तकनीकी शर्तों में, इसका टाइप अपरिभाषित है)। ऐसा लगता है कि आईई 8 क्या कर रहा है पहली बार: onload को इसे ठीक से निष्पादित किए बिना विंडो में संलग्न करना।

उपर्युक्त कोड तब स्पष्ट हो जाता है: हम केवल onload ईवेंट को पहचानने के लिए IE8 को मजबूर कर रहे हैं। हमें परवाह नहीं है कि क्या निष्पादित किया जाता है, या क्या नहीं, इसलिए हम किसी भी मौजूदा window.onload कोड के माध्यम से पाइप करना सुनिश्चित कर सकते हैं जो पहले ही परिभाषित है (केवल सावधानी के रूप में)।

एचटीएमएल (कम से कम मेरे परीक्षण से) में एक आंतरिक स्क्रिप्ट के रूप में यह महत्वपूर्ण है।

आपका HTML इस प्रकार कुछ इस तरह (प्रासंगिक भागों) दिखेगा:

<script type="text/javascript"> 
    var windowOnload=window.onload||function(){};window.onload=function(){windowOnload();}; 
</script> 
<script type="text/javascript" src="script.js"> 
</script> 

मेरे परीक्षण से, संचित साफ करने और पृष्ठ को रीलोड के बाद, मैं window.onload मिल गया है सफलतापूर्वक हर बार ट्रिगर करने के लिए।

मुझे उम्मीद है कि इससे मदद मिलती है।

0

मुझे पता है कि यह एक पुराना सवाल है, लेकिन मुझे बस एक ही चीज़ का सामना करना पड़ा।

window.onload=function() { alert('hello');}; 

से

window.onload= new function() { alert('hello');}; 

कीवर्ड यहाँ new है अलग तरह से व्यवहार कर रहा है।

जब भी मैं 'फ़ंक्शन' से पहले 'नया' शब्द जोड़ता हूं, तब तक मेरा जेएस समाप्त हो रहा था (ऑनलोड =) भाग। भले ही यह मेरे लोकहोस्ट में 'नया' के बिना ठीक काम करता है, लेकिन एक बार जब मैं इसे ऑनलाइन डालता हूं, तब तक यह तब तक काम नहीं करता जब तक कि मैं 'नया' नहीं जोड़ता।

+0

दूसरा संस्करण तुरंत नए फ़ंक्शन चलाता है, क्योंकि नया कॉल करने से कन्स्ट्रक्टर के रूप में फ़ंक्शन() के साथ 'नई' ऑब्जेक्ट बन जाएगी। –

0

पुराना सवाल लेकिन मुझे एक ही समस्या थी लेकिन यह एक और समस्या साबित हुई। मेरी समस्या यह थी कि मैंने <script type="application/javascript"> किया जो <IE9 समझ में नहीं आता है या यहां तक ​​कि चलाने की कोशिश भी नहीं करता है। पुराने ब्राउज़र के लिए काम करने के लिए आपको अभी भी text/javascript का उपयोग करना होगा, भले ही यह तकनीकी रूप से सही प्रकार न हो ...