Wie bekomme ich die Ansichtsfensterposition relativ zum Bildschirm?

8

Meine Frage

Welcher JavaScript-Code sagt mir, wo sich das Ansichtsfenster des Browsers relativ zum Bildschirm befindet?

Kontext

Meine Webanwendung enthält ein Applet, mit dem ein Snapshot über java.awt.Robot erstellt werden kann (das jar des Applets ist natürlich signiert und kann dies ausführen).

Das Problem ist, dass Robot createScreenCapture mit Rechtecken relativ zum gesamten Bildschirm arbeitet, während ich ein Rechteck relativ zum Ansichtsfenster erfassen möchte.

Ein Browser kann natürlich irgendwo auf dem Bildschirm sein, aber selbst wenn er maximiert ist (und daher oben links auf dem Bildschirm beginnt, zB {0,0}), weiß ich immer noch nicht, wie viel der Inhalt gepusht wird wegen der Fensterkopfzeile oder einiger Werkzeugleisten runter.

Meine bisherigen Forschungen

Es scheint nur IE gibt die Ansichtsfensterposition durch window.screenTop / Left .

Chrome unterstützt diese, aber sie halten die Browserposition.

FF unterstützt diese nicht, stattdessen hat screenX / Y , aber wie Chrome halten sie die Browserposition.

Sicherstellen, dass wir alle dieselbe Terminologie verwenden

Bildschirm - AKA der Desktop. Zum Beispiel habe ich ein WSXGA + (1680x1050) Display. Ich benutze Windows und meine Taskleiste wird immer unten angezeigt, so dass sie etwa 50 Pixel vertikal verbraucht.

Browser - ein Fenster, das verschiedene Symbolleisten enthalten kann: Adress- und / oder Lesezeichenleiste oben, Status- / Zusatzleisten am unteren Rand usw.

Ansichtsfenster - wo eine URL tatsächlich gerendert wird.

    
targumon 06.11.2012, 15:21
quelle

2 Antworten

1

Ihr Applet kennt seinen Speicherort über getLocationOnScreen ()

Hier ist ein Java-Applet, das die Bildschirmposition des Mauszeigers ausgibt, während Sie darin sind:

ScreenTest.java:

%Vor%

screentest.html:

%Vor%

Hier ist ein einfacheres Beispiel, das von Javascript aufgerufen wird. Das Applet ist 1px mal 1px in der oberen linken Ecke der Seite.

ScreenTest2.java:

%Vor%

screentest2.html:

%Vor%     
Jon Hulka 08.11.2012, 01:23
quelle
2

Jon Hulkas Antwort hat ihm ganz seinen Kredit eingebracht - funktioniert perfekt für mich!

Wenn jemand anderes hierher kommt und eine Lösung benötigt, die keine Applets verwendet (meine Frage nach JavaScript-Code), können sie die (kompromittierende *) Lösung unten versuchen.

* = Es wird davon ausgegangen, dass die Browser nicht zu viel am unteren Fensterrand haben.

%Vor%     
targumon 14.11.2012 17:56
quelle

Tags und Links