需求:点机前台页面的连接跳转到另一个页面的指定位置。
方法一:用连接跟书签的方式解决。方便简单。
但SEO说不行。
好吧,放弃用其他方法。
方法二:
在前台的连接 如:<a href="${domain }/p${xx.id}.html"></a>
这样将调用后台方法:
SPRING + MVC
@RequestMapping("/{prefix:[qrp]}{id:[0-9-]+}.html")
public String function(HttpServletRequest request,
HttpServletResponse response, @PathVariable("id") Long id, @PathVariable("prefix") String prefix,
ModelMap map) throws Exception {
String val = "";
if ("q".equals(prefix))
val="MfTit7";
else if ("r".equals(prefix))
val="MfTit5";
else if ("p".equals(prefix))
val="MfTit6";
map.put("hash", val);
return tour(request, response, id, map);
}
即接受参数 q r p 等。我的是p 所以进入这个方法。
map.put("hash", val); 即返回的位置书签。
return xxxxx(request, response, id, map); //需要put的其他参数。 以及return 的页面也在这个方法中。
在页面上:
jsp上 的js中:var globalHash='${hash}' 为了在js中引用值
在js中:
$(document).ready(function(){
var hash = globalHash;
if (hash) {
$("a.click").removeClass("click");
$("#"+hash).click();
$("html,body").animate({scrollTop:$("#"+hash).offset().top},0);
}
});
$("html,body").animate({scrollTop:$("#"+hash).offset().top},0);
也可以这样写:
scrollBodyTopTo($("div#c_"+hashParam).offset().top-offset);
或:
scrollTo($("div#c_"+hash).offset().top-offset);
这句话就可以滚屏了。