Для iPad вы можете попробовать:
if (window.Touch)
{
alert("touch my ipad/iphone/ipod");
}
else
{
alert("no touch!");
}
Рискну предположить, что iPhone работает так же.
Вы также можете использовать медиазапросы CSS для получения чего-то подобного:
<link rel="stylesheet" media="all and (max-device-width: 480px)" href="iphone.css">
<link rel="stylesheet" media="all and (min-device-width: 481px) and (max-device-width: 1024px) and (orientation:portrait)" href="ipad-portrait.css">
<link rel="stylesheet" media="all and (min-device-width: 481px) and (max-device-width: 1024px) and (orientation:landscape)" href="ipad-landscape.css">
<link rel="stylesheet" media="all and (min-device-width: 1025px)" href="ipad-landscape.css">