开发者

Mobile minibrowser: how to reload image while maintaing page offset position?

开发者 https://www.devze.com 2022-12-16 06:27 出处:网络
In mobile web minibrowsers, it seems that the window object makes no sense — since there\'s only one window to show. Therefore, things like window.pageYOffset=320 make no sense (as far as I can

In mobile web minibrowsers, it seems that the window object makes no sense — since there's only one window to show. Therefore, things like window.pageYOffset=320 make no sense (as far as I can tell).

Given a simple example such as a map zoomin/zoomout such as

<html>
<head>
<title>zoom.html</title>
<script language="javascript">
var zoom=15;
var vpos=window.pageYOffset;
var key="whatever-your-Google-Maps-site-key-is";
function setImgSrc(z) {
    document.getElementById('img').src=
    "http://maps.google.com/maps/api/staticmap?center=Lisbon,Portugal&zoom="
    +zoom+"&size=400x400&maptype=roadmap&sensor=false&key="+key;
}
function zoomin()   
{ if(zoom<=18) zoom++; vpos=window.pageYOffset; setImgSrc(zoom); }
function zoomout()  
{ if(zoom>=1)  zoom--; vpos=window.pageYOffset; setImgSrc(zoom); }
</script>
</head>
<body onload="javascript:setImgSrc(15);">
<h1>zoom</h1>
<p><img id="img" alt="Lisbon,Portugal"/></p><p>
&nbsp;&nbsp;<a onclick="javascript:zoomin()"&开发者_StackOverflowgt;[+]</a>&nbsp;&nbsp;
&nbsp;&nbsp;<a onclick="javascript:zoomout()">[&ndash;</a>&nbsp;&nbsp;
</p><hr></body></html>

which seems to work well on desktop browsers; so I ask: how can I indicate that, on updating the page (onclick doesn't seem to work on minibrowsers, but href does) it should offset the page to the previous position? (For other reasons, simply (re)loading the page to a given named anchor isn't working on the problem I'm dealing with.)

Thanks in advance for your feedback.


Isn't it lovely when you answer your own questions? Hmmm...

Anyway, according to this, some properties/functions for the JavaScript (JScript?) window object have different representations according to the choice of browser (Firefox, IE, etc.). Therefore, a possible page vertical offset function would be

function setPageVPos(w,vpos) {
  try { w.scrollTo(0,vpos); } catch(e) {}
  try { w.document.body.scrollTop(vpos); } catch(e) {}
}

The first tries with the window.scrollTo implementation in Firefox browsers, and the second tries with the document.body.scrollTop implementation in IE browsers. I've tested in both Firefox (desktop) browser and in a HP iPaq IE-like (mobile) minibrowser and works on both.

0

精彩评论

暂无评论...
验证码 换一张
取 消