В пикселях:
function getPxDiag(){
var scW = screen.width, scH = screen.height;
//return Math.hypot(scW, scH) - не работает в IE
return Math.sqrt( Math.pow(scW, 2) + Math.pow(scH, 2) );
}
UPD:
Чтобы перевести в дюймы нужно знать количество точек на линейный дюйм
(DPI). Для этого можно воспользоваться старенькой единицей изменения CSS -
in. Минус этого метода в том, что придется засунуть в DOM лишний элемент.
<div id="inch" style="width:1in;"></div>
//Общая формула: PIXEL = INCHES / (1 / DPI);
function getInchDiag(){
var DPI = inch.offsetWidth;
return getPxDiag() * (1/DPI);
}
alert( getInchDiag() );
jsfiddle.net/In4in/yboco3wd
Интересный момент - данный вариант, а так же вариант от
riot26 показывают на 5 дюймов больше для моего устройства, без понятия почему.
UPD 2:
Собственно, оказалось это связанно с тем, что на большей части устройств браузером (или чем-то там еще, не разбираюсь) неправильно определяется DPI (в 96 точек на дюйм) и
1in
, соотвественно, имеет ширину меньше, чем реальный дюйм.
Как исправить? -Без понятия :(