How can I get the browser's screen height? - cgi

Does anyone know how to get the screen height in a Perl CGI script? I know that Perl is a server-side language but is there any way to get the screen height (pixels) of the users screen?
Thanks

Do you mean getting the height of the user's browser window?
There's no way to get that information without using some Javascript.
I would use Javascript/CSS to control presentation (like width and height), not the backend language.

well, you can use js to set a cookie of the height
then in next request, use Perl CGI to get the cookie.
do remember, you will not get the height in the first visit.
Thanks.

I would recommend reading up this
Howtocreate article
There are different interpretations of a window height/width, and you should know these quirks.

Sure , make an ajax request with either XMLHttpRequest or jQuery (or whatever other framework you prefer) and send window.innerHeight to your server

Related

Titanium, Can you print a WebView webpage

In Titanium, is it possible to print a webpage, similar to printing a webpage from Safari? I'm using WebView.
It only needs to work with iOS, not Android.
If so, how? I haven't been able to find anything about this. One person told me it was impossible, but I thought I'd ask Stackoverflow - people here often surprise me :)
If you use the toImage() function on the WebView it takes a print to the visible area:
$.webview.toImage();
You want all the html content right?
If not, an possible workaround (I've didn't try this), but in order to do this, you need to know the html document height.
Create another WebView on an lower zIndex of your content app or place it out of the visible area like:
$.webview2.left = Ti.Platform.displayCaps.platformWidth;
Take a print of that copied WebView with:
$.webview2.toImage();
Than remove that view, obviously this wont work for all situations.

Identify the monitor with the browser window in FireBreath

I am using FireBreath to create a cross browser plugin which makes use of some native libraries for the respective platform (some .NET based DLLs for Windows and Objective-C based dylibs/frameworks for Mac). Native libraries display UI screens. In order to improve usability, if the user has a multi/extended monitor setup, i would like the native UIs to appear on the same screen as the browser window is currently on.
If an identifier to the monitor with the browser window can be retrieved, that can be passed down to the native components which can be configured to display their UIs on that monitor. I have used FireBreath's getWindowPosition() method to get the rect coordinates of the plugin and used that info to identify the correct monitor in the Windows platform.
However, the coordinates returned in Mac seems to be always 0 (or 1) irrespective of monitor on which the browser window currently resides. I understand that we have to configure an event model and a drawing model in order for this to work in Mac. I have tried following event/drawing model combinations without much success.
1) Cocoa/CoreGraphics
2) Carbon/CoreGraphics
Any help in this regard is much appreciated. Also please do share if there are other approaches to achieve the same. What i want to achieve is to identify the monitor on which the current active browser window resides in Mac. I am unsure at this point, but it maybe possible to achieve this at Objective-C level (without any changes at FireBreath level). Also please note that i want to support Safari, Firefox and Chrome browsers.
You won't like this answer, but simply put you can't do that on Mac. The problem is that with CoreGraphics you are only given a CGContextRef to work with, and it doesn't know where it will be drawn. It was technically possible in older browsers to get an NSWindow by exploiting some internal implementation details, but many browsers that's no longer possible and it was never supported.
Other drawing models are the same; CoreAnimation you have a CALayer but it doesn't know which screen or monitor it is drawn to. I personally think it's a bit annoying as well, but I do not know of any way to find out which monitor your plugin is rendered to, particularly since most of them actually copy the buffer to something else and render in a different process.
I did manage to come up with a workaround and i am just replying here for the completeness of the thread. As #taxilian explained, it is not possible to retrieve plugin coordinates using the window reference. As an alternative approach, Javascript 'Window' object has 2 properties called 'screenX' and 'screenY' that return X and Y coordinates of the browser window relative to the screen. If the user has an extended monitor setup, these are the absolute coordinates with respect to the full extended screen. We can use these values to determine the monitor with the browser window (if the X coordinate is outside the bounds of the primary monitor's width, then the browser should essentially be on the extended monitor). We can retrieve DOM properties from Firebreath as explained in the following link:
http://www.firebreath.org/display/documentation/Invoking+methods+on+the+DOM

Show a single thumbnail when posting on facebook

A little background info is that my team and I developed a website for a Real Estate Agency and I've been assigned the task of setting the image of the currently selected property into facebook's sharing feature.
The webpage for the property is dynamic as there are several listings, so what I've done is select the first image that is loaded on the page and set it to the og:image meta tag.
Now let's say I copy the URL and post it on Facebook, it'll show the correct thumbnail, HOWEVER, it'll also show multiple thumbnails from other listings.
All images on the website are over 200 x 200px and are within an aspect ratio of 3:1.
My question is, how do I tell Facebook to only take my initial image and not grab others while it's as it.
Is there perhaps a SelectSingleImage property that I can apply?
I've already spent more time searching for the answer to this issue than I would have liked, so thanks for any help provided, it's much appreciated.
One method I use sometimes is to recognize Facebook's server and simply provide it with different data. This way you can actually only have one image on the page (as far as Facebook knows).
I don't know anything about vb.net, but here is a simple code sample in PHP. All it does is perform a regular expression on the user agent of the request to match it against the string "facebook".
$isFacebook = false;
if(preg_match("/facebook/",strtolower($_SERVER["HTTP_USER_AGENT"]))) {
$isFacebook = true;
}
Facebook may very well change their user agent signature one day, but for now, I'm pretty sure you'll be safe but keep synced with the Developers Blog and the Roadmap.
It seems that Facebook saved those images in cache for some bizarre reason, but to resolve this issue all I had to do was enter the URL into Facebook's Linter tool which in turn cleared the cache on their server.

Generating a random preview image on a HTML5 video tag

Is it possible to capture a snapshot of a video that's loaded using the HTML5 video element and use that as a preview image until the video loads or the play event is triggered? I know about the poster attribute but I want the thumbnail to be self generated, like a random frame from the video. Sort of what YouTube/Vimeo does.
Thanks,
I don't think that this is possible in pure HTML5. Principally because the stream is not loaded when you see the 'object' in the webpage so the client can't get the desired frame.
However, the best option for you is to save / cache the 'random frame' before loading the page and then use it as the poster of the video. This will allow you to reduce the client work and save the bandwith.
check THIS, which is the first thing that I've found (if you're using PHP and you want a 'quick and dirty' way to get the frame)
Update
Apparently HERE there is a solution with popcorn.js BUT it seems that you can't do it in the way that (I suppose) you need.
This because it would be possible to do this only inside the same domain due to browser security issues.

VB silverlight for windows phone webbrowser

i am writing an application for windows phone and i am using a webbrowser
i am navigating to an image , but this image is not full screen and it seems so awfull !
is there any way , either to full the wite with user's background color , or to set a default zoom on a spesific spot ?
thank you !
The webbrowser control is slow, a memory hog and hard to customise.
I think you shouldn't use the web browser for displaying and zooming this image.
Instead, take a look at using a canvas and image control together like in the MultiTouch sample and library - http://www.galasoft.ch/Touch/wp7/ and http://multitouch.codeplex.com/
If you do need to use the webbrowser, then you could try to wrap the image in an HTML page - and you could use a mixture of html, javascript and css (including dynamic javascript called from the host) - that might allow you to achieve some of the customisations you are looking for.