如何切换页面的语言并保持页面的滚动位置?

时间:2016-09-20 07:22:00

标签: php html

我想切换页面的语言。这非常有效:

<?php
session_start();
header('Cache-control: private'); // IE 6 FIX
if(isSet($_GET['lang'])) {
    $lang = $_GET['lang'];
    // register the session and set the cookie
    $_SESSION['lang'] = $lang;
    setcookie("lang", $lang, time() + (3600 * 24 * 30));
} else if(isSet($_SESSION['lang'])) {
    $lang = $_SESSION['lang'];
} else if(isSet($_COOKIE['lang'])) {
    $lang = $_COOKIE['lang'];
} else {
    $lang = 'en';
}
switch ($lang) {
    case 'en':
        $lang_file = 'lang.en.php';
        break;
    case 'de':
        $lang_file = 'lang.de.php';
        break;
    default:
        $lang_file = 'lang.de.php';
}
include_once 'languages/' . $lang_file;
?>

如果我点击例如&#34;英语&#34; ...

  <a href="index.php?lang=en">English</a>
  <a href="index.php?lang=de">German</a>

...我的英文页面版本加载如下:

www.mypage.php?lang=en

我的问题是:当我向下滚动页面然后点击其他语言时,页面会加载到顶部位置。但我希望页面保持滚动位置。 (实际上,当我只刷新页面时,我的页面一直保持在滚动位置。)

2 个答案:

答案 0 :(得分:1)

您可以在具有此唯一ID的范围内使用英语和德语

<a href="index.php?lang=en#unique_id_for_english"><span id="unique_id_for_english">English<span></a>
<a href="index.php?lang=de#unique_id_for_german"><span id="unique_id_for_german">German<span></a>

答案 1 :(得分:-1)

你必须使用

 event.preventDefault();

在你的标签上,这样就会停止默认重新加载,导致页面刷新到顶部。

例如

$('a').click(function () {
     event.preventDefault();
});