TravoniMedlem sedan okt. 20041 538 inlägg
Sitter try/catch-blocket "fel" eller finns det ett bättre sätt att göra på?
function containsDOM(a,b){
var c=false;
[B]try{[/B]
do{
if((c=a==b))break;
b=b.parentNode
}
while(b!=null);
return c
}
[B] catch(e){return c}[/B]
};
TroxyMedlem sedan mars 20041 508 inlägg
Skippa do. En try...catch i JavaScript ser bara ut såhär:
try {
// Försök här
} catch (e) {
// Fånga här
}
nitro2k01Medlem sedan aug. 20037 630 inlägg
Troxy skrev:
Skippa do. En try...catch i JavaScript ser bara ut såhär:
Fast do har ju inget med try att göra där. do ser bara till att while-slingan får köra en första runda oavsett vad.
Även om koden är väldigt knasigt indenterad ser den korrekt ut i mina ögon. Dock ser jag inte meningen med try/catch här. Under vilka omständigheter uppstår det fel?
TroxyMedlem sedan mars 20041 508 inlägg
nitro2k01 skrev:
Fast do har ju inget med try att göra där. do ser bara till att while-slingan får köra en första runda oavsett vad.
Aha så JavaScript har blivit välsignat med en do-sats? Det var en nyhet för mig. :e
Jag tolkade alltså Travonis kod helt fel... :r
TravoniMedlem sedan okt. 20041 538 inlägg
Tack för svar.
Under vilka omständigheter uppstår det fel
Jo i FF så får jag :
uncaught exception: Permission denied to get property HTMLDivElement.parentNode
Så därav try/catch.
Jo, jag vet, indenteringen suger. Jag kan inte det i JS.
zcorpanMedlem sedan dec. 20042 269 inlägg
function containsDOM(a, b) {
var c = false;
try {
do {
if ((c = a == b))
break;
b = b.parentNode;
} while (b != null);
} catch(e) {
}
return c;
}
Fast jag tror att du har ett annat problem om Firefox ger ett säkerhetsundantag. Försöker du inspektera en div i en iframe eller liknande?
TravoniMedlem sedan okt. 20041 538 inlägg
Ok, nej det är en sådan här mouseover/out grej:
<html>
<head>
<title>onmouseenter/leave for IE4+, Netscape 6+, Opera 7</title>
<script type="text/javascript">
function containsDOM (container, containee) {
var isParent = false;
do {
if ((isParent = container == containee))
break;
containee = containee.parentNode;
}
while (containee != null);
return isParent;
}
function checkMouseEnter (element, evt) {
if (element.contains && evt.fromElement) {
return !element.contains(evt.fromElement);
}
else if (evt.relatedTarget) {
return !containsDOM(element, evt.relatedTarget);
}
}
function checkMouseLeave (element, evt) {
if (element.contains && evt.toElement) {
return !element.contains(evt.toElement);
}
else if (evt.relatedTarget) {
return !containsDOM(element, evt.relatedTarget);
}
}
</script>
</head>
<body>
<div style="border: 1px solid green;"
onmouseover="if (checkMouseEnter(this, event)) {
window.status = event.type;
}"
onmouseout="if (checkMouseLeave(this, event)) {
window.status = event.type;
}">
Kibology for all.
<br>
<a href="http://www.kibo.com/">Visit GOD</a>
<br>
All for Kibology.
</div>
<hr>
<div style="border: 1px solid green;"
onmouseout="if (checkMouseLeave(this, event)) {
this.style.visibility = 'hidden';
}">
This div element with the green border gets hidden when the mouse
leaves the div.
<div style="border: 1px solid blue;">
Child div with blue border.
</div>
Kibology for all.
</div>
<hr>
<div style="border: 1px solid green;"
onmouseover="if (checkMouseEnter(this, event)) {
this.style.visibility = 'hidden';
}">
This div element with the green border gets hidden when the mouse enters
the div.