2011-10-24 7 views
5

मुझे IE8 के साथ मेरे साइट पृष्ठों में से एक प्राप्त करने में कुछ समस्याएं आ रही हैं। यह आईई 9, सफारी (दोनों पीसी & मैक) में ठीक काम करता है & फ़ायरफ़ॉक्स (मैक)। मैं एक find(tag1).html(tag1) कॉल अनुक्रम का उपयोग कर रहा एक शीर्षक प्रतिस्थापन करने के लिए, लेकिन जब मैं IE स्क्रिप्ट डीबगर में यह डिबग मैं IE8 में निम्नलिखित त्रुटि मिलती है, और इस html(tag2) समारोह में:jQuery .find() त्रुटि: "विधि या संपत्ति पहुंच के लिए अप्रत्याशित कॉल"

Unexpected call to method or property access

find(tag1) समारोह लगता है नेस्टेड ऑब्जेक्ट #sidebarheader की बजाय संलग्न वस्तु (यानी #sidebar) को वापस करने के लिए, और इससे बाद में html(tag2) कॉल करने में समस्याएं आती हैं।

मैं एक प्रतिनिधि परीक्षण का मामला बना लिया है इस प्रकार है:

<!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> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    <title>JQuery .find() test case</title> 

    <script type="text/javascript" src="http://code.jquery.com/jquery-1.6.4.js"></script> 
    <script type="text/javascript"> 
     function UpdateHeader() { 
      $('#sidebar').find('header').html("New Title"); // IE8, nesting div's in the find fct. will not discover the child div 
     } 

     document.ready = UpdateHeader; 
    </script> 
</head> 

<body> 
     <div style="height: 400px; width: 390px"> 

      <div id="jqm-home"> 
      <div id="page"> 
       <div id="sidebar"> 
        <div id="sidebarheader"> 
         <header>Old Title</header> 
        </div> 
       </div> 
      </div> 
      <p onclick="UpdateHeader();">Click to update title</p> 
      </div> 
     </div>  
</body>    
</html> 

और यहाँ jsFiddle परीक्षण का मामला है:

http://jsfiddle.net/bnmcK/21/

किसी को कैसे काम करने के लिए इसे पाने के लिए पर एक सुझाव है आईई 8 में?

उत्तर

1

< शीर्षलेख > एक HTML5 टैग है, जिसे IE8 के बारे में पता नहीं है (IE9 हालांकि, इस टैग का समर्थन करता है)। चूंकि आप एक्सएचटीएमएल 1.0 संक्रमण को घोषित कर रहे हैं, इसलिए मैं < एच 1 > टैग का उपयोग करने का सुझाव दूंगा, जो आईई 8 में ठीक काम करेगा।

4

IE (8 और नीचे) के पुराने संस्करणों में नए HTML 5 तत्वों का समर्थन करने के लिए, एक आसान चाल है, जिसमें आपकी स्क्रिप्ट चलाने से पहले एक डमी तत्व बनाना शामिल है।

तो, बस अपने पृष्ठ में document.createElement('header'); पर कॉल करने से समस्या हल हो जाएगी, here देखें।

पूर्ण स्पष्टीकरण के लिए, this post एक स्पष्टीकरण प्रदान करने का एक अच्छा काम करता है।

इसके अलावा, html5shiv एक ऐसी परियोजना है जो अन्य तत्वों के लिए भी इस समस्या को हल करती है।