| 

.NET C# Java Javascript Exception

1
Ich würde gerne das Windows Contextmenü verhalten in meine Web-Seite adoptieren.
Soll heißen: Falls die größe des Div's an der aktuellen Mausposition größer als das aktuelle Fenster wird, soll es nicht nach unten-rechts aufklappen sondern nach oben rechts.
Falls oben rechts wieder kein Platz ist, usw...
Also: Wie stellt man fest, ob die Größe eines Div's, größer als die aktuelle Fenstergröße ist?
News:
07.09.2009
FireFighter 21 1 3
5 Antworten
3
Dazu benötgst du ein paar zeilen Javascript, das geht mit Css nicht.

Jedoch meckert das forum beim posten also so:
Der Code
07.09.2009
GreenRover 83 1 3
2
Das machst du am besten mit dem evten objekt in JavaScript.
http://de.selfhtml.org/javascript/objekte/event.htm
Allerdings tuen sich die Gecko-Browser schwer damit...

Alternativ könntest du ein Plugin für ein JavaScriptFramework (z.B. jQuery nutzten)
Dieses (http://www.javascripttoolbox.com/lib/contextmenu/) hat auch noch die Vorteile, dass du auf Themes etc. zurückgreifen kannst.
07.09.2009
licht_micha 364 1 3
1
mit html und css kommst du da nicht weit. Ohne Javascript wird es nicht machbar sein. Mit jquery (jquery.com) könnte das Script (auszugsweise) so aussehen:


function willPopToLeft() {
var popup = $('#popup');

return (popup.width() + popup.position().left) > document.innerWidth;
}

ungetestet, aber sollte true zuückgeben, wenn dein popup das fenster verlässt.
07.09.2009
ellion 41 1 1
1
Mit jquery geht das sehr einfach, z.B. so:

<html>
<head>
<title>test</title>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<script type="text/javascript" src="http://jqueryjs.googlecode.com/files/jquery-1.3.2.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {

var seite = $(window).height();
var navigation = $("#navigation").height();

if(seite >= navigation){
alert("seite ist größer");
//mach dies, oder das
//alert("seitenhöhe: "+seite+"px | navigation: "+navigation+"px");
}else{
alert("seite ist kleiner");
//mach dies, oder das
//alert("seitenhöhe: "+seite+"px | navigation: "+navigation+"px");
}

});
</script>
</head>

<body>
<div id="navigation">
<ul style="margin:0;padding:0">
<li>menü punkt 1</li>
<li>menü punkt 2</li>
<li>menü punkt 3</li>
<li>menü punkt 4</li>
</ul>
</div>
</body>
</html>


grüße
BiX
07.09.2009
BiX 149 1 5
1
Die tatsächliche Größe des sichtbaren Bereiches und die Werte den height und width zurückliefern müssen nicht zwingend gleich sein.

Das Verhalten kann sich zwischen verschiedenen Browsern ändern.

(wie ich selbst feststellen musste).

Speziell der IE (Version weiß ich jetzt auch nicht mehr) neigt dazu bei height Phantasiewerte abzusondern, die jenseits jeder Kinoleinwand liegen und sich nach jedem Aufruf auf magische Art vergrößern können (Ich tippe mal IE 6-).
07.09.2009
tomahlak 237 1 2
Das der IE unter 7.0 das macht was er will, wundert hier sicher keinen.

Notfalls könnte man ja auch mit jquery den Browser und die genaue Version abfragen und für den IE unter Version 7.0 die Höhe anders ermittel falls es wirklich so sein sollte.

[url=http://docs.jquery.com/Utilities/jQuery.browser]Utilities/jQuery.browser[/url]

Wobei ich aber sagen muss das height(); von jquery sicher sehr zuverlässig ist. Außerdem sind Sie da dahinter das es bestmöglich in jedem Browser funktioniert, sonst hätte so ein Framework ja gar keinen Sinn.
BiX 07.09.2009

Stelle deine Javascript-Frage jetzt!