4

私がやろうとしているのは、ユーザーを href リンクを介して php スクリプトに渡し、ページが更新されていないように、リンクをクリックする前とまったく同じ位置に戻すことです。これが可能かどうか、またはどのように可能かを誰かが知っていますか? ありがとうございました。

4

5 に答える 5

9

HTMLを使用すると、次のことができます

<p id='open_here'><a href='script.php'> Send to script </a> </p>

そして、その正確な位置にリンクすることができます

<a href="mypage.html#open_here">Send Back to page</a>

基本的に、前のコード スニペットのように通常のリンクを使用する代わりに、次のコードを使用してページにリダイレクトできます。

//php redirect
<?php header('Location: mypage.html#open_here'); ?>

//Javascript redirect
<script type='text/javascript'>
    window.location = "mypage.html#open_here";
</script>
于 2013-07-09T19:03:49.263 に答える
2

機能させるために Javascript を追加してもかまわない場合は、ユーザーがリンクをクリックしたときとまったく同じスクロールバーの位置にリダイレクトできるようにするソリューションを次に示します。

index.php(リンク先のファイル)

<script>
    window.addEventListener('load', function() {
        // Do we have a #scroll in the URL hash?
        if(window.location.hash && /#scroll/.test(window.location.hash)) {
            // Scroll to the #scroll value
            window.scrollTo(0, window.location.hash.replace('#scroll=', ''));
        }

        // Get all <a> elements with data-remember-position attribute
        var links = document.querySelectorAll('a[data-remember-position]');

        if(links.length) {
            // Loop through the found links
            for(var i = 0; i < links.length; i++) {
                // Listen for clicks
                links[i].addEventListener('click', function(e) {
                    // Prevent normal redirection
                    e.preventDefault();

                    // Redirect manually but put the current scroll value at the end
                    window.location = this.href + '?scroll=' + window.scrollY;
                });
            }
        }
    });
</script>

page.php(リダイレクトする PHP スクリプト)

<?php

// Get the provided scroll position if it exists, otherwise put 0
$scrollPos = (array_key_exists('scroll', $_GET)) ? $_GET['scroll'] : 0; 

// Redirect back to index.php and provide the scroll position as a hash value
header('Location: index.php#scroll='.$scrollPos);

それが役に立てば幸い!:)

于 2013-07-09T19:58:09.740 に答える