Lo que yo estoy tratando de hacer es pasar de un usuario a un script php a través de un enlace href, luego les pasa exactamente en la misma posición en que estaban antes de hacer clic en el enlace, como la página no ha sido renovado. ¿Alguien sabe si es o cómo podría ser esto posible posible? Gracias.

InformationsquelleAutor user2516546 | 2013-07-09

5 Comentarios

  1. 8

    El uso de HTML puede tener las siguientes

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

    Y, a continuación, puede vincular de nuevo a esa posición exacta con

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

    Por lo tanto, esencialmente, en lugar de utilizar un enlace regular como en los anteriores fragmento de código, usted puede redirigir a la página utilizando

    //php redirect
    <?php header('Location: mypage.html#open_here'); ?>
    
    //Javascript redirect
    <script type='text/javascript'>
        window.location = "mypage.html#open_here";
    </script>
    • Gracias Richard. Yo había pensado si hacerlo de esa manera pero me preguntaba si había una suave manera de hacerlo. Como una especie de javascript falso de vuelta, pero en php!
    • No creo que usted va a hacer que en estricto php. Si utiliza jQuery scrollTop sin argumentos para llegar a su actual posición de desplazamiento vertical y, a continuación, utilizar scrollTop de nuevo con la posición como un argumento para mover a la posición en la página. Usted podría ejecutar el php mediante ajax y en el éxito de mover a la posición, o usted podría pasar a la posición de la secuencia de comandos y la espalda. Que podría ser desordenado en sus propios aunque
  2. 1

    Sólo estoy derramando ideas aquí, pero me gustaría usar javascript para interceptar del usuario haga clic en el href, y .preventDefault primera. Luego de averiguar donde se encuentra el usuario en la página. Tal vez por la división de la página en secciones, identificado por Id. Su código html sería algo así como

    <div id="section-1"></div>
    <div id="section-2"></div>
    <div id="section-3"></div>

    así que cuando javascript impide el vínculo de la ejecución, que figura en la sección el usuario que actualmente es. Digamos que sabemos que cada sección de la altura. A continuación, tenemos que averiguar la posición de la barra de desplazamiento. Yo no he hecho eso, pero echa un vistazo aquí

    http://api.jquery.com/scrollTop/

    Una vez que sabemos que la altura de cada sección y una vez que podamos detectar dónde se encuentra la barra de desplazamiento, podemos determinar en qué sección el usuario es el que residen. Entonces, obtenemos la url del href enlace y agregar una cadena de consulta como por ejemplo, http://something.com/script.php?section=2 y redirigir usuario a ello con lo que los datos que usted desea . A continuación, una vez que el script ha hecho su trabajo anexar la cadena de consulta para la redirección de uri y redirigir al usuario a volver con algo como http://something.com#section-2 y el usuario será inmediatamente pop sección-2

    Sé que este no es específica de la respuesta, pero espero que os he dado algunas pistas e ideas de cómo lograr esto. Déjame saber cómo funciona!

  3. 1

    Si no te importa la adición de algunos de Javascript para que funcione, aquí es una solución que hará posible que se redirija a la misma exacta posición de la barra de desplazamiento cuando el usuario hace clic en el enlace.

    index.php (el archivo donde se ubique el enlace)

    <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 (el script PHP que se redirige de nuevo)

    <?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);

    Espero que ayude! 🙂

  4. 0

    Que había tenido que recordar la posición de desplazamiento de un <seleccione>. El ejemplo de abajo. Tres
    botones de envío para ilustrar por qué hay tres getElementById. A ver
    es el trabajo debe mover la barra de desplazamiento primera

    <?php
    $scrollusObscura=$_GET["imgbtn"];
    $header = <<<EOD
    <!DOCTYPE html>
    <html>
    <head>
    <title>snk_db</title>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8" >
    <head>
    <script>
    function gety(){
    var y=document.getElementById('myUlID').scrollTop;
    document.getElementById('imgbtn1').value=y; 
    document.getElementById('imgbtn2').value=y;
    document.getElementById('imgbtn3').value=y;
    }
    function itemRelevatur(scrollum){
    document.getElementById('myUlID').scrollTo(0, scrollum);
    }
    </script>
    </head>
    <body  onload="itemRelevatur({$scrollusObscura})" >
    EOD;
    $html= <<<EOD
    <div >
    <select size="6" id="myUlID" name="myUlName" onscroll="myTimer = setInterval(gety, 300)">
    <option>'1'</option>
    <option>'2'</option>
    <option>'3'</option>
    <option>'4'</option>
    <option>'5'</option>
    <option>'6'</option>
    <option>'7'</option>
    <option>'8'</option>
    <option>'9'</option>
    <option>'10'</option>
    <option>'11'</option>
    <option>'12'</option>
    <option>'13'</option>
    <option>'14'</option>
    <option>'15'</option>
    <option>'16'</option>
    <option>'17'</option>
    <option>'18'</option>
    <option>'19'</option>
    </select>
    </div>
    EOD;
    $html1= <<<EOD
    <div><form method='GET' action'myscript.php'>
    <input type='hidden' name='imgbtn' id='imgbtn1' value=''></input>
    <input type='submit'  value='Submit' ></input>
    </form>
    EOD;
    $html2= <<<EOD
    <form method='GET' action'myscript.php'>
    <input type='hidden' name='imgbtn' id='imgbtn2' value=''></input>
    <input type='submit'  value='Submit' ></input>
    </form>
    EOD;
    $html3= <<<EOD
    <form method='GET' action'myscript.php'>
    <input type='hidden' name='imgbtn' id='imgbtn3' value=''></input>
    <input type='submit'  value='Submit' ></input>
    </form></div>
    EOD;
    echo $header;
    echo $html;
    echo $html1;
    echo $html2;
    echo $html3."</body></html>";
  5. 0

    Tuve grandes problemas con la cookie de bibliotecas de javascript, la mayoría de las cookies bibliotecas no se pudo cargar lo suficientemente rápido antes de que yo necesitaba para desplazarse en el evento onload. así que me fui para el moderno html5 del navegador manera de manejar esto. almacena la última posición de desplazamiento en el navegador web y, a continuación, en la recarga de la página se lee la configuración del navegador a la última posición de desplazamiento.

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
    <script type="text/javascript">
    $(document).ready(function () {
    if (localStorage.getItem("my_app_name_here-quote-scroll") != null) {
    $(window).scrollTop(localStorage.getItem("my_app_name_here-quote-scroll"));
    }
    $(window).on("scroll", function() {
    localStorage.setItem("my_app_name_here-quote-scroll", $(window).scrollTop());
    });
    });
    </script>

Dejar respuesta

Please enter your comment!
Please enter your name here