Kaklz Posted March 15, 2005 Report Share Posted March 15, 2005 Problēma šāda: Ir dokuments (pietiekoši garš, sanāk arī pascrollēt), kura apakšā ir forma. Vienā no formas laukiem vajadzētu ievadīt datumu. Tad nu ar JavaScript līdzekļiem tiek uztaisīts <div> elements, kas satur vizuālu kalendāru un ar position: absolute tiek nopozicionēts vajadzīgajā vietā. Viss strādā lieliski uz FireFox un Opera, IE kā vienmēr māk atgādināt par sevi. Kods, kas tiek izmantots peles atrašanās vietas noteikšanai ir šāds: var mouseX; var mouseY; var isIE = document.all?true:false; if (!isIE) document.captureEvents(Event.MOUSEMOVE); document.onmousemove = getMousePosition; function getMousePosition(e) { if (!isIE) { x = e.pageX; y = e.pageY; } if (isIE) { x = event.clientX + document.body.scrollLeft; y = event.clientY + document.body.scrollTop; } mouseX=x; mouseY=y; return true; } Cik nu mēģināju atrast problēmu, sapratu, ka IE nez kāpēc neuzstāda savu document.body.scrollTop vērtību, attiecīgi mans ģenerētais kalendārs parādās nevis peles klikšķa vietā, bet daudz augstāk dokumentā, neņemot vērā uz leju paritināto daļu. Varbūt kādam ir kādas idejas, kur ir problēma, kāpēc IE neuzstāda document.body.scrollTop ? Varbūt ir kāds cits, labāks veids, kā parādīt kādu <div> elementu peles klikšķa vietā, kā sekot līdzi peles kustībām? Paldies! Link to comment Share on other sites More sharing options...
bubu Posted March 15, 2005 Report Share Posted March 15, 2005 (edited) Kā būtu, ja scrollēšanas pozīcijas noteiktu šādi: scrollTop = (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop); scrollLeft = (document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft); Kautgan īsti nesaprotu, kam te vajadzīgas peles koordinātes. Vai tad nevar kalendāru palikt, piemēram zem vajadzīgā formas lauka? var e = document.getElementById("datuma_ievades_lauks"); var cal = document.getElementById("kalendaara_divs"); cal.style.top = e.offsetTop + e.offsetWidth + "px"; cal.style.left = e.offsetLeft + "px"; (protams, offseti dod relatīvās koordinātes, bet izrēķināt absolutās ar vienkāršu ciklu nav grūti. P.S. var isIE = document.all?true:false; Vai tad uz FF 1.0 versijām arī nav implementēts document.all ? Edited March 15, 2005 by bubu Link to comment Share on other sites More sharing options...
Kaklz Posted March 15, 2005 Author Report Share Posted March 15, 2005 Kā būtu, ja scrollēšanas pozīcijas noteiktu šādi: scrollTop = (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop); scrollLeft = (document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft); 15019[/snapback] Paldies, tagad viss strādā kā nākas! Vai tad uz FF 1.0 versijām arī nav implementēts document.all ? 15019[/snapback] Ir gan, to arī pielabošu, bet nu būtībā jau vienalga, galvenais jau, ka uz FF un Opera strādā :) Link to comment Share on other sites More sharing options...
Kaklz Posted March 15, 2005 Author Report Share Posted March 15, 2005 Kautgan īsti nesaprotu, kam te vajadzīgas peles koordinātes. Vai tad nevar kalendāru palikt, piemēram zem vajadzīgā formas lauka? var e = document.getElementById("datuma_ievades_lauks"); var cal = document.getElementById("kalendaara_divs"); cal.style.top = e.offsetTop + e.offsetWidth + "px"; cal.style.left = e.offsetLeft + "px"; (protams, offseti dod relatīvās koordinātes, bet izrēķināt absolutās ar vienkāršu ciklu nav grūti. 15019[/snapback] Arī interesants piegājiens, iespējams, ka pat labāks :) Paldies! Link to comment Share on other sites More sharing options...
Recommended Posts