blob: b0021976a6742d8d8675abfa5eca2661b6db491b [file] [log] [blame] [raw]
using System;
using System.Net;
using System.Text;
using System.Windows.Forms;
namespace RemoteView.PageHandlers
{
class JavascriptPageHandler : PageHandler
{
// screen devices list
private Screen[] screens = Screen.AllScreens;
public override byte[] handleRequest(HttpListenerResponse response, string[] uri)
{
int screen = getRequestedScreenDevice(uri, screens);
return Encoding.UTF8.GetBytes("var http = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject(\"Microsoft.XMLHTTP\");" + Environment.NewLine +
"image.addEventListener('contextmenu', function(e){ handleInput('r',e); });" + Environment.NewLine +
"image.addEventListener('mousedown', function(e){ handleInput('d',e); });" + Environment.NewLine +
"image.addEventListener('mouseup', function(e){ handleInput('u',e); });" + Environment.NewLine +
"setTimeout('doubleBufferLoader();', 1000);" + Environment.NewLine +
// reload image and trigger another reload in 1sec after image has loaded
"function doubleBufferLoader () {" + Environment.NewLine +
" var newImageUrl = '/screen/' + new Date().getMilliseconds();" + Environment.NewLine +
" var anImage = new Image();" + Environment.NewLine +
" anImage.addEventListener( 'load', function(){ image.src=newImageUrl; setTimeout('doubleBufferLoader();', 1000); }, false );" + Environment.NewLine +
" anImage.src = newImageUrl; " + Environment.NewLine +
"}" + Environment.NewLine +
"function handleInput(c, e) { " + Environment.NewLine +
"e.stopPropagation();" + Environment.NewLine +
"e.preventDefault();" + Environment.NewLine +
"px = e.offsetX ? e.offsetX :e.pageX-document.getElementById(\"image\").offsetLeft;" + Environment.NewLine +
"py = e.offsetY ? e.offsetY :e.pageY-document.getElementById(\"image\").offsetTop;" + Environment.NewLine +
"var request = '/click/" + screen + "/' + c + '/' + py + '/' + px;" + Environment.NewLine +
"http.open('GET', request, true);" + Environment.NewLine +
"http.send();" + Environment.NewLine +
"}");
}
}
}