Dominik Mikiewicz

Dominik Mikiewicz maps made easy,
www.cartomatic.pl ||
cartoninjas.net

Temat: Dziwne zachowanie js w ie?

Witam, poniższy kawałek kodu wykonuje się poprawnie w operze i ff, jednak w ie7 zachowuje się dziwnie - nie chce wykonać metody click(), ale jeżeli chwilę przed wywołam message box, to potem poprawnie wykonuje click().

Byłbym wdzięczny za wszelkie sugestie jak to poprawić.

pzdr
dom

case 'mouseup':

//release pan
panStarted = false;

//because of some reason ie doesn't do the click below if the alert box is commented out...
//alert('test');

//click hidden button
document.getElementById('OverviewClick').click();

//restore the box position - not needed now since the box is reset in the code behind
//pannedObject.style.left = boxX + 'px';
//pannedObject.style.top = boxY + 'px';

breakDominik Mikiewicz edytował(a) ten post dnia 06.08.08 o godzinie 12:04

konto usunięte

Temat: Dziwne zachowanie js w ie?

a może takie coś:

// na przyszłość :)
function $(itemName)
{
return document.getElementById(itemName);
}

i dajesz w swoim kodzie takie coś

var newItem = $('OverviewClick');

newItem.click();

może pomoże, ale nie daje 100% pewności musiał bym kod zobaczyć
p.s.
CZasem IE ma takie wiksy że gubi obiekty np. this wiec na poczatku kodu/funkcji czasem pomaga zrobienie przypisania var $this = this;

:)Wojciech Andrzejczak edytował(a) ten post dnia 06.08.08 o godzinie 12:41
Dominik Mikiewicz

Dominik Mikiewicz maps made easy,
www.cartomatic.pl ||
cartoninjas.net

Temat: Dziwne zachowanie js w ie?

Niestety nic z tego - znaczy (nie)działa tak jak poprzednio - z alertem linjkę wcześniej jest oki, ale bez niestety nie.

Poniżej kod - nieco długi i niezmiernie chaotyczny, ale js nie jest moim konikiem i raczej toczę boje, żeby kod działał poprawnie.

Raz jeszcze dzięki za poświęcony czas.

pzdr
dom

//The code below used for obtaining mouse coordinates has been compiled from some freely available web resources
//1: http://www.webdeveloper.com/forum/showthread.php?t=92007 and should be credited to SCNightsky
//2: http://javascript.about.com/library/blmousepos.htm
//3: http://javascript.internet.com/page-details/mouse-coor... (http://www.codelifter.com / http://javascript.internet.com
//4. Corner Coords by Fred Basset: http://bytes.com/forum/thread90547.html
//The rest of the code has been written by cartomatic@o2.pl. Feel free to redistribute it if you wish to do so.

//Gets the corner X coord
function getCornerX (elementId) {
var obj = document.getElementById(elementId);

var totalOffset = 0;

while (obj != null) {
totalOffset += obj.offsetLeft;
obj = obj.offsetParent;
}
return totalOffset;

}
//Gets the corner Y coord
function getCornerY (elementId) {
var obj = document.getElementById(elementId);

var totalOffset = 0;

while (obj != null) {
totalOffset += obj.offsetTop;
obj = obj.offsetParent;
}
return totalOffset;

}

//Some variables
var boxX;
var boxY;

var boxWidth;
var boxHeight;

var overviewWidth;
var overviewHeight;

var panStartX;
var panStartY;

var panEndX;
var panEndY;

var minTop;
var minLeft;
var maxTop;
var maxLeft;

var panStarted;

var overviewMap;
var pannedObject;

//overview pan function
function overviewPan(e){

overviewMap = document.getElementById('OverviewMap');
pannedObject = document.getElementById('OverviewBox');

// capture the mouse position
var posX = 0;
var posY = 0;
if (!e) var e = window.event;
if (e.pageX || e.pageY)
{
posX = e.pageX;
posY = e.pageY;
}
else if (e.clientX || e.clientY)
{
posX = e.clientX + (document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft);
posY = e.clientY + (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop);
}

if (posX < 0){posX = 0;}
if (posY < 0){posY = 0;}
//end capture mouse position

//do some stuff depending on a passed event
switch (e.type)
{
case 'mousedown': //start selectionBand

//Clear hidden fields
document.getElementById('OverviewCentreX').value = null;
document.getElementById('OverviewCentreY').value = null;

//get box size
boxWidth = parseInt(pannedObject.style.width);
boxHeight = parseInt(pannedObject.style.height);

//get box top left corner
boxX = pannedObject.offsetLeft;
boxY = pannedObject.offsetTop;

//get overview size
overviewWidth = parseInt(overviewMap.style.width);
overviewHeight = parseInt(overviewMap.style.height)

//min top & left coords of the box top left corner
//minTop = overviewMap.offsetTop+16; //16 accounts for the top bar height
//minLeft = overviewMap.offsetLeft;

minTop = boxY - parseInt((overviewHeight - boxHeight)/2);
minLeft = boxX - parseInt((overviewWidth - boxWidth)/2);

//max top & left coords of the box top left corner
//maxTop = overviewMap.offsetTop + overviewHeight + 16 - boxHeight; //16 accounts for the top bar height
//maxLeft = overviewMap.offsetLeft + overviewWidth - boxWidth;

maxTop = boxY + parseInt((overviewHeight - boxHeight)/2);
maxLeft = boxX + parseInt((overviewWidth - boxWidth)/2);

//start panning
panStarted = true;

//record start mouse coords
panStartX = posX;
panStartY = posY;

break

case 'mousemove':

//if pan started then pan the box
if (panStarted) {

//ensure the box doesn't move outside the pane
if (boxX - (panStartX - posX) < minLeft) {
pannedObject.style.left = minLeft + 'px';
}
else if (boxX - (panStartX - posX) > maxLeft) {
pannedObject.style.left = maxLeft + 'px';
}
else {
pannedObject.style.left = boxX - (panStartX - posX) + 'px';
}

if (boxY - (panStartY - posY) < minTop) {
pannedObject.style.top = minTop + 'px';
}
else if (boxY - (panStartY - posY) > maxTop) {
pannedObject.style.top = maxTop + 'px';
}
else {
pannedObject.style.top = boxY - (panStartY - posY) +'px';
}

}

//Update hidden fields
document.getElementById('OverviewCentreX').value = parseInt(pannedObject.style.left) - boxX;
document.getElementById('OverviewCentreY').value = boxY - parseInt(pannedObject.style.top);
//y values are inverted so it generates proper cartesian offsets

break

case 'mouseup':

//release pan
panStarted = false;

//because of some reason ie doesn't do the click below if the alert box is commented out...
//alert('test');

//click hidden button
//document.getElementById('OverviewClick').click();

var test = $('OverviewClick');
test.click();

//restore the box position - not needed now since the boz is reset in the code behind
//pannedObject.style.left = boxX + 'px';
//pannedObject.style.top = boxY + 'px';

break

case 'mouseout':

//release pan
panStarted = false;

//document.getElementById('OverviewMap').click();

//restore the box position
pannedObject.style.left = boxX + 'px';
pannedObject.style.top = boxY + 'px';

//end do nothing

break

default:
alert("OverviewPan Failed");
break
}

}Dominik Mikiewicz edytował(a) ten post dnia 06.08.08 o godzinie 12:52

Następna dyskusja:

Krzaczki dziwne




Wyślij zaproszenie do