首页 > 当client端JS返回false是,如何让页面redirect到一个新页面

当client端JS返回false是,如何让页面redirect到一个新页面

是这样的,最近在试着用python实现news.dbanotes.net,碰到一个问题。
当用户每个标题变的三角形是,就可以给该文章投票。
当其已经是登陆用户时,没有问题,点击三角形,文章point+1,页面没有刷新。
非登陆状态下,点击三角形,页面会redirect到登陆界面。
看了下HTML源代码,有一下JS脚本。 最后一行,return false,应该是保证页面没有刷新?
那么,非登陆情况下,页面又是怎么redirect到另外一个页面的??不得其解啊,请各位v友帮助。

我在server端的建了个/vote URL mapping, 做了redirect ,但是页面不会redirect,无法实现像news.dbanotes.net这样的效果。 自己在用flask实现。

//news.dbanotes.net HTML页面 的vote JS函数
function vote(node) {
var v = node.id.split(/_/); // {'up', '123'}
var item = v[1];

// adjust score
var score = byId('score_' + item);
var newscore = parseInt(score.innerHTML) + (v[0] == 'up' ? 1 : -1);
score.innerHTML = newscore + (newscore == 1 ? ' point' : ' points');

// hide arrows
byId('up_' + item).style.visibility = 'hidden';
try { byId('down_' + item).style.visibility = 'hidden'; }
catch(err) {} // ignore

// ping server
var ping = new Image();
ping.src = node.href;

return false; // cancel browser nav
}

我看了一下它的代码,在登录状态下,在每个箭头的 a 标签里,onclick 属性是这么设置的:

<a 
    id="up_11925" 
    onclick="return vote(this)" 
    href="vote?for=11925&amp;dir=up&amp;by=caiknife&amp;auth=LTTpphl0&amp;whence=%6e%65%77%73">
    <img src="grayarrow.png" border="0" vspace="3" hspace="2">
</a>

而非登录状态下,是这样的:

<a 
    id="nil" 
    href="vote?for=11992&amp;dir=up&amp;whence=%6e%65%77%73">
    <img src="grayarrow.png" border="0" vspace="3" hspace="2">
</a>

因此,在非登录状态下,点那个箭头之后,页面就直接跳转了。

而在登录状态下,点了那个箭头,onclick 里会 return false,就禁止浏览器跳转,同时在页面上添加了一个看不见的图片,可以看作是一次异步请求,调用的 URL 里就会记录下是哪个用户对哪个条目做了操作。所以你用 Flask 是可以做到的,只是这个动作不是在服务器端完成,而是在浏览器端完成。

【热门文章】
【热门文章】