如何在帖子后返回锚点

时间:2011-12-22 18:16:10

标签: php javascript

我有一个创建报价单,订单等的应用程序,当用户添加页面重新加载的项目时,可能会很长。问题是用户必须向下滚动到最后一个项目以添加另一个项目 - 这将非常耗时。有没有办法让我自动完成这项工作?我已经尝试过将锚点放在每个这样的行项目上;

echo "<form action='display_quotation.php' method='post'>\n";
echo "<input type='hidden' name='quote_id' value='$quote_id'>\n";
echo "<input type='hidden' name='item' value='$detail_number'>\n";
echo "<a name='item_$detail_number'></a>\n";

并输入javascript;

echo "
<html>

<head>
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'>
<style type='text/css'> table {font: 13px arial} </style>

<script type='text/javascript'>
function goToAnchor() {
    window.location.hash='item_$item';
}
</script>
</head>

<body onload='goToAnchor();'>\n";

这似乎不起作用 - 我进入了网址http://my_domain/display_quotation.php?#item_3,但无论通过帖子传递什么项目,页面都会转到第2项。

4 个答案:

答案 0 :(得分:1)

更改行

window.location.hash='item_$item';

window.location.hash='item_<?php echo $item; ?>';

答案 1 :(得分:0)

我的另一个简单想法是,您可以选择这样做,而不是页面加载和编写脚本来执行哈希:

<?php header("location : yourpagename.php#$item"); ?>

另一种解决方案是使用jQuery,向下滚动到页面底部。

一个很好的例子就是使用jQuery:http://djpate.com/2009/10/07/animated-scroll-to-anchorid-function-with-jquery/

答案 2 :(得分:0)

问题可能在于浏览器滚动到右侧锚点,但随后由于样式/图像等的重排而导致页面中锚点的位置发生偏移。经过一段时间的延迟后再次尝试再次使用相同的锚点。在load事件处理程序中执行此操作:

setTimeout(function () {
    with (document.location) hash && (hash = hash);
}, 1);

如果1ms没有削减它,可以使用较大的延迟。

答案 3 :(得分:0)

这是一个非常简单的解决方案

<?php

if($POST)
{
    $iItemId = $POST['item_id'];
    //after saving the item to cart redirect to
    redirect('domain.com/#'.$iItemId);
}

?>

<a id="1">Product 1</a>
<a id="2">Product 2</a>
<a id="3">Product 3</a>