2011-09-26 5 views
11

में एक विज्ञापन को फिक्स्ड पोजीशनिंग एक और अद्यतित स्पष्टीकरण के लिए संपादन पर जा सकता है।आईई

मैं एक विज्ञापन निर्धारित नहीं कर सकता जो document.write() के माध्यम से एक निश्चित स्थिति में लिखा जाता है। यह आईई के अलावा अन्य सभी ब्राउज़रों में ठीक काम करता है, और इसमें आईई 9 शामिल है। http://htinteractive.com/bottom_bar/demo.html

कोई सुझाव अत्यधिक सराहना की जाएगी:

यहाँ एक उदाहरण है। मैं विचारों से बाहर चला रहा हूँ।

धन्यवाद।

संपादित करें:

मैं निम्नलिखित आईई मुद्दा मैं आ रही करने के लिए नीचे समस्या संकुचित है। इसे नीचे आसान बनाने के लिए ...

<style type="text/css"> 
    #temp1 
    { 
     position:fixed; 
     bottom:0; 
     height:100px; 
     width:100px; 
     border:solid 2px red; 
    } 
</style> 

<!--WORKS IN IE--> 
<div id="temp1"> 
    <script type="text/javascript"> 
     document.write("<scr" + "ipt type=\"text/javascript\">\nif(typeof(cachebuster) == \"undefined\"){var cachebuster = Math.floor(Math.random()*10000000000)}\nif(typeof(dcopt) == \"undefined\"){var dcopt = \"dcopt=ist;\"} else {var dcopt = \"\"}\nif(typeof(tile) == \"undefined\"){var tile = 1} else {tile++}\ndocument.write('<scr'+'ipt src=\"http://ad.doubleclick.net/adj/shz.bloomington/home;pos=728x90_1;' + dcopt + ';tile=' + tile + ';sz=728x90;ord=' + cachebuster + '?\"></scr'+'ipt>');\n</scr" + "ipt>"); 
    </script> 
</div> 


<!--FAILS TO FIX POSITION IN IE--> 
<script type="text/javascript"> 
    document.write('<div id="temp1">'); 
    document.write("<scr" + "ipt type=\"text/javascript\">\nif(typeof(cachebuster) == \"undefined\"){var cachebuster = Math.floor(Math.random()*10000000000)}\nif(typeof(dcopt) == \"undefined\"){var dcopt = \"dcopt=ist;\"} else {var dcopt = \"\"}\nif(typeof(tile) == \"undefined\"){var tile = 1} else {tile++}\ndocument.write('<scr'+'ipt src=\"http://ad.doubleclick.net/adj/shz.bloomington/home;pos=728x90_1;' + dcopt + ';tile=' + tile + ';sz=728x90;ord=' + cachebuster + '?\"></scr'+'ipt>');\n</scr" + "ipt>"); 
    document.write('</div>') 
</script> 

फिर भी, मैं वास्तव में 2 विधि काम करने की जरूरत है, और मैं अपने बालों को बाहर खींच कर रहा हूँ कैसे यह पता लगाने की कोशिश कर रहा।

धन्यवाद।

+1

आईई IE9 से पहले 'स्थिति का समर्थन नहीं करता है, तो आप अपने पेज के शीर्ष पर निम्नलिखित रख क्या होता है: fixed' बिल्कुल। आपको इसे जावास्क्रिप्ट समाधान के साथ नकली करना होगा। – Pointy

+2

यह अजीब बात है ... यह मेरे लिए आईई 7 तक नीचे ठीक तरह से काम कर रहा है ...? मेरा वास्तविक मुद्दा हालांकि किसी ऑब्जेक्ट के साथ दस्तावेज़.write के माध्यम से लिखा गया है जिसमें एक निश्चित तत्व है जिसमें निश्चित स्थिति है। – Serhiy

+0

वास्तव में ?? खैर मैं निश्चित रूप से गलत हो सकता था, हालांकि मुझे लगभग निश्चित है कि यह आईई 6 में काम नहीं करता है (नहीं)। मैं एक सेकंड में 7 कोशिश करूंगा क्योंकि यह सुनिश्चित होगा कि यह काम करता है :-) – Pointy

उत्तर

1

जांची नहीं है, लेकिन जैसे कि यह काम करना चाहिए लगता है:

<script> 
(function(){ 
    var w = window, 
    d = document, 
    s = d.createElement('script'), 
    div = d.createElement('div'), 
    el = [].slice.call(d.getElementsByTagName('script'), -1), 
    baseUrl = 'http://ad.doubleclick.net/adj/shz.bloomington/home;pos=728x90_1;'; 
    // end var block 

    if(!("cachebuster" in w)){ 
    cachebuster = Math.floor(Math.random()*10000000000); 
    } 
    dcopt = "dcopt" in w ? "" : "dcopt=ist;"; 
    tile = "tile" in w ? tile+1 : 1; 

    div.id = 'temp1'; 
    div.appendChild(s); 
    el.parentNode.inserBefore(div, el); 
    s.src = baseUrl + dcopt + ';tile=' + tile + ';sz=728x90;ord=' + cachebuster + '?'; 

})(); 
</script> 
+0

हमम ... इसे आजमा रहे हैं, लेकिन el.parentNode प्राप्त करना जारी रखें अपरिभाषित है ... इसे केवल कुछ divs में लपेटा गया है, लेकिन एक ही समस्या – Serhiy

+0

के माध्यम से उस समस्या को हल किया गया ... el = document.getElementById ('random'), लेकिन निश्चित तत्व को पोजिशन करने का मुख्य मुद्दा अभी भी मौजूद है ... – Serhiy

1

ऐसा लगता है कि स्क्रिप्ट टैग अपने DIV के अंदर विज्ञापन के रूप में आप उम्मीद करेंगे embedding नहीं कर रहे हैं की तरह। आईई डेवलपर टूल के अनुसार, विज्ञापन आपके डीआईवी के बाहर है और इसलिए स्थिति प्राप्त नहीं होती है।

अपने उदाहरण कोड का उपयोग # temp1 को केवल उस स्थिति में बदलकर करें जहां आप इसे चाहते हैं।

समस्या यह है कि आपका विज्ञापन शैली प्राप्त नहीं कर रहा है। यदि आपके पास अपना विज्ञापन किसी आईडी के साथ वापस आने का विकल्प है तो आप संभवतः उस पर अपनी शैली का आधार बना सकते हैं या वैकल्पिक रूप से अपने विज्ञापन को सही स्थान पर प्राप्त करने के लिए डीओएम मैनिपुलेशन का उपयोग कर सकते हैं।

गहरी समस्या, विज्ञापन लिपि को आपके डीआईवी के अंदर अपनी सामग्री प्रस्तुत करने के लिए प्राप्त करना मुझे यकीन नहीं है।

अद्यतन:

मेरा मानना ​​है कि IE में अंतर स्क्रिप्ट टैग का उपयोग करने का तरीका है। किसी अन्य स्थान से स्क्रिप्ट लोड करने के लिए src विशेषता का उपयोग नोड पेड़ को तोड़ने लगता है।

http://jsfiddle.net/wuqVw/1/

http://jsfiddle.net/wuqVw/2/

पहले उदाहरण में आप देख सकते हैं कि विज्ञापन DIV के अंदर है, जबकि दूसरे में यह नीचे है:

यहाँ कुछ सबूत है। शायद आईई में कुछ नियम है जो कहता है कि एसआरआरआईपीटी टैग्स स्रोत गुणों के साथ सिर में हैं, इसलिए यह उन्हें आपके डीआईवी के बाहर रख रहा है।

2

हो सकता है कि आईई temp1 DIV स्क्रिप्ट तत्व लिखने से पहले समाप्त हो गया करने की आवश्यकता है:

<script type="text/javascript"> 
    document.write('<div id="temp1"><' + '/div>'); 
    document.write("<scr" + "ipt type=\"text/javascript\">\nif(typeof(cachebuster) == \"undefined\"){var cachebuster = Math.floor(Math.random()*10000000000)}\nif(typeof(dcopt) == \"undefined\"){var dcopt = \"dcopt=ist;\"} else {var dcopt = \"\"}\nif(typeof(tile) == \"undefined\"){var tile = 1} else {tile++}\ndocument.write('<scr'+'ipt src=\"http://ad.doubleclick.net/adj/shz.bloomington/home;pos=728x90_1;' + dcopt + ';tile=' + tile + ';sz=728x90;ord=' + cachebuster + '?\"></scr'+'ipt>');\n</scr" + "ipt>"); 
</script> 

संपादित (अपनी टिप्पणी के जवाब में):

आप विज्ञापन स्क्रिप्ट के अंदर जाना चाहता हूँ के बाद से div, आपको document.write को एक तरफ रखना होगा और स्क्रिप्ट प्रोग्रामेटिक रूप से बनाना होगा, ताकि आप इसे appendChild पर div में डाल सकें:

<script type="text/javascript"> 
    document.write('<div id="temp1"><' + '/div>'); 
    if(typeof(cachebuster) == "undefined") { 
     var cachebuster = Math.floor(Math.random() * 10000000000); 
    } 
    if(typeof(dcopt) == "undefined") { 
     var dcopt = "dcopt=ist;"; 
    } else { 
     var dcopt = ""; 
    } 
    if(typeof(tile) == "undefined") { 
     var tile = 1; 
    } else { 
     tile++; 
    }  
    var script = document.createElement("script"); 
    script.type = "text/javascript"; 
    script.src = "http://ad.doubleclick.net/adj/shz.bloomington/home;pos=728x90_1;" 
     + dcopt 
     + ";tile=" + tile 
     + ";sz=728x90;ord=" + cachebuster + "?"; 
    divTemp.appendChild(script); 
</script> 

कृपया ध्यान दें कि मैं 100% यकीन है कि, स्क्रिप्ट को पुन: फ़ॉर्मेट जबकि उन सभी भाग निकले दृश्यों के साथ मैं कुछ लिखने में गलती नहीं की नहीं हो सकता ...

+0

यह वह व्यवहार है जो डिफ़ॉल्ट रूप से प्रदर्शित होता है। भले ही मैं चाहता हूं कि यह नहीं होगा। मैं चाहता हूं कि उस स्क्रिप्ट को उस temp1 div के अंदर लिखा जाए। – Serhiy

+1

यदि आप appendChild का उपयोग करते हैं तो आप document.write का उपयोग नहीं कर सकते .. और विज्ञापन आमतौर पर इसका उपयोग करते हैं – Madd0g

1

जांच देखने के लिए कि अपने HTML DTD प्रारूप

1

एक "src" विशेषता के साथ स्क्रिप्ट लिखते समय, कुछ ब्राउज़र वास्तव में बाहरी स्क्रिप्ट चलाने से पहले निम्न इनलाइन कोड का विश्लेषण करते हैं। बाहरी स्क्रिप्ट का परिणाम div के बाहर लिखा जाएगा, क्योंकि इनलाइन कोड इसे बनाता है, यह कुछ समय पहले बहुत से ब्राउज़र के लिए सच था।

इस पर काबू पाने के लिए कोई आसान तरीका नहीं है, या तो div को HTML में या बाहरी स्क्रिप्ट में डालें।

1

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">