2015-05-27 2 views
0

Исправлено! Решение найдено в конце этого вопросаОстановить страницу от сколления по ссылке нажмите

Я работаю над веб-сайтом, на котором у меня есть страница индекса и информационная страница. Когда вы прокрутите страницу Индекса и нажмите ссылку на страницу «Информация», я хочу, чтобы страница «Информация» открывалась в той же позиции, на которой была прокручена страница «Индекс».

Я прочитал около ScrollSneak и несколько подобных вопросов и объяснений здесь, в Stackoverflow, но мог бы заставить его работать для себя. Я совершенно нуб на javascript, и я только начинаю изучать, как его использовать. Может ли кто-нибудь, возможно, дать мне пример, как на самом деле применить его к ссылке? Кажется, я не вижу, какой элемент действительно связывает его с реальной ссылкой.

кода я нашел и применил ниже (суть ссылка удалена, потому что я слишком низкую репутация, чтобы добавить больше чем 2 ссылки XD проверить ScrollSneak файла)

 <!DOCTYPE html> 
<html> 
    <head> 
     <!--i'm using jquery too --> 
     <script type="text/javascript" src="path/to/jquery.js"></script> 
     <!-- include scroll_sneak.js --> 
     <script type="text/javascript" src="path/to/scroll_sneak.js"></script> 

     <!-- now activate scroll sneak --> 
     <script type="text/javascript"> 
     $(document).ready(function(){ 
      var sneaky = new ScrollSneak(location.hostname); 

      // you want to prevent scrolling when form #my-form is submitted 
      document.getElementById('my-form').onsubmit = sneaky.sneak; 

      // or maybe you want to prevent scrolling whenever any link within 
      // a list-option is clicked: 
      $('li a').each(function(){ 
       // note the use of 'this' instead of '$(this)', because we 
       // want the raw element, not the jQuery object  
       this.onclick = sneaky.sneak; 
      }); 
     }); 
     </script> 
    </head> 
    <body> 

     <a href="info.html"><img src="IMG/info_inactive.png" onmouseover="this.src='IMG/info_active.png'" onmouseout="this.src='IMG/info_inactive.png'" /></a> 
     ... 
    </body> 
</html> 

Overlay код Im используя прямо сейчас

<script> 
window.addEventListener("load", function(){ 
var load_screen = document.getElementById("load_screen"); 
document.body.removeChild(load_screen); 
}); 
</script> 

РЕШЕНИЕ!

Я смог найти рабочий код на this forum topic, податель нашел его в другой теме в Stackoverflow. Без лишнего шума код!

Прежде всего вам нужна функция чтения файлов cookie. Поместите это в разделе вашей страницы:

<script language="JavaScript"> 
function readCookie(name){ 
return(document.cookie.match('(^|;)'+name+'=([^;]*)')||0)[2] 
} 
</script> 

Далее вы измените тег тела следующим образом:

<body onScroll="document.cookie='ypos=' + window.pageYOffset" onLoad="window.scrollTo(0,readCookie('ypos'))"> 

ВНИМАНИЕ! Протестировано в Chrome, Firefox и Safari. «Удивительно», это не работает в IE, но кто все-таки использует IE? -_-

Спасибо всем за помощь мне, это очень ценится;)

ответ

0

Я не думаю, что вам нужно scrollsneak, это путь более простой, чем это. Есть несколько решений в зависимости от того, что вы хотите, либо JSRef:

<script> 
function scrollWin() { 
    window.scrollTo(500, 0); 
} 
</script> 

(дополненный здесь: http://www.w3schools.com/jsref/met_win_scrollto.asp)

пространства, где он говорит, что 500 является прокручивается на оси Х (левый и правый), 0 - для оси Y (вверх и вниз). Вы просто меняете цифры, пока не найдете нужную вам позицию. И чтобы перейти на другую страницу, а затем выполнить это, вы можете сделать сценарий, который принимает некоторые параметры, такие как URL-адрес ссылки и конкретная позиция (или значение элемента, содержащего ссылку внутри), и позволяет использовать их , например, так:

<script> 
function linkAndScrollTo(theURL, xPos, yPos){ 
    window.location.href = theURL; 
    window.scrollTo(xPos, yPos); 
} 
<script> 

Или, если вы хотите, чтобы перейти к определенному элементу в целом, можно добавить идентификатор к элементам, которые должны быть «прокручиваются к», а затем ссылку приводят к тому, ID на следующей странице.Например:

<div> 
    <a href="http://www.yourPage.com/Info.html#theElementsIDHere">SomethingSomethingDarkside</a> 
</div> 

Есть, вероятно, больше, я надеюсь, что это ответили на вопрос.

+0

Спасибо за ответ! Я сейчас пытаюсь использовать этот код. Как вы сказали, и это на сайте W3schools, первый код должен автоматически прокручиваться до значения (500) страницы при открытии? Однако это, похоже, не работает так, как сейчас. Если я не понял. Я использую накладку div (погрузки), так как у моего сайта несколько тяжелых изображений, я не хочу, чтобы люди видели его загрузку. Может ли это повлиять на код прокрутки? (код добавлен в вопрос выше) – Elvalianon

+0

Btw Я использую Chrome. – Elvalianon

+0

Это не должно быть проблемой, и Chrome тоже. Но я думаю, что в этом случае было бы лучше сделать функцию скрипта на первой странице, чтобы прикрепить параметры к URL-адресу, а другой - на целевой странице (info.html в этом случае), чтобы получить URL-адрес. См. Решение Eclectic, я думаю, что он уже предоставил решение. :) – Taffer

1

Если решение Taffer не работает на вас, вы можете попробовать добавить положение прокрутки в качестве параметра get.

(Раскрытие информации: Я не использую JQuery, я предпочитаю Mootools, но это должно работать)

Добавить идентифицирующий класс каждую ссылку, вы хотели бы, чтобы просмотреть на новой странице:

<a class="linkandscroll" href="info.html">link</a> 

Затем на каждой странице добавьте следующее:

<script> 

    /* Method to return get params from url 
    thanks to: http://www.jquerybyexample.net/2012/06/get-url-parameters-using-jquery.html 
    */ 

    function getUrlParameter(sParam) 
    { 
     var sPageURL = window.location.search.substring(1); 
     var sURLVariables = sPageURL.split('&'); 
     for (var i = 0; i < sURLVariables.length; i++) 
     { 
      var sParameterName = sURLVariables[i].split('='); 
      if (sParameterName[0] == sParam) 
      { 
       return sParameterName[1]; 
      } 
     } 
     return false; 
    } 

    /* Method to link and set scroll get param */ 

    function linkAndScroll(element){ 
     /* get link element's href attribute */ 
     var href = element.attr('href'); 
     /* get curent scroll position */ 
     var currentScroll = $('body').scrollTop(); 
     /* create new url */ 
     var url = href + '?scrollto=' + currentScroll; 
     /* change page location */ 
     window.location.href = url; 
    } 

    /* on doc ready */ 

    $(document).ready(function(){ 

     /* loop through each scrolling link */ 

     $('a.linkandscroll').each(function(){ 
      /* add click event to call linkAndScroll method */ 
      $(this).on('click', function(){ 
       linkAndScroll($(this)); 
       return false; 
      }); 
     }); 

     /* If scroll param is set on this page, do scroll now */ 

     var scroll = getUrlParameter('scrollto'); 
     if(scroll){ 
      window.scrollTo(0, scroll); 
     } 

    }); 

</script> 
+0

Спасибо за ответ :) Я применил классы ко всем моим ссылкам и добавил скрипт на каждую страницу. К сожалению, это все еще не работает. Я решил вытащить загружаемый накладной div, достал небольшую полосу прокрутки в div, который у меня был в середине страницы, и попробовал разные браузеры, потому что я думал, что это может смутить скрипт, но все равно продолжает прокручивать вверх. – Elvalianon

+0

Хмм ... Я перестану быть ленивым и взбунтовать тестовый пример в эти выходные. Оставайтесь с нами;) – Eclectic

+0

Спасибо, это было бы здорово, если бы у вас было время для этого. Понравилось бы это. ^^ – Elvalianon

Смежные вопросы