Поддерживать позицию прокрутки в Javascript window.open () - PullRequest
4 голосов
/ 17 декабря 2008

Как мне сохранить положение прокрутки родительской страницы, когда я открываю новое окно с помощью window.open ()? Родительская страница возвращается в верхнюю часть страницы.

Вот мой текущий код:

<a href="#" onclick="javascript: window.open('myPage.aspx');">
   Open New Window
</a>

Ответы [ 4 ]

9 голосов
/ 17 декабря 2008
<a href="#" onclick="window.open('myPage.aspx');return false;">Open New Window</a>
  • javascript: не требуется в атрибутах события.
  • Вы не возвращали false из обработчика событий, поэтому ссылка шла по ссылке, эквивалентной <a href="#">Scroll to top</a>.
1 голос
/ 17 декабря 2008
<a href="javascript:void()" onclick="window.open('myPage.aspx');">Open New Window</a>

Должен сделать это. Как уже упоминалось, # пытается перейти к несуществующей привязке, что приведет к прокрутке браузера до самого верха. Вы не хотите удалять атрибут href, потому что некоторые браузеры не рассматривают теги <a> без атрибутов href как ссылки для целей стилизации, и вам придется определять дополнительные правила CSS, чтобы получить ссылку, похожую на другие ссылки ваш сайт.

Кроме того, зачем иметь атрибут href, а затем пытаться заблокировать событие, всегда возвращая false из вашего обработчика. На мой взгляд, этот способ чище, чем другие, предложенные здесь.

0 голосов
/ 01 июля 2009

Хорошо, чтобы страница была доступна для тех, у кого нет JavaScript или она отключена:

<a href="myPage.aspx" target="_blank" onclick="window.open('myPage.aspx');return false;">Open New Window</a>

Цель = "_ blank" - открыть в новом окне (или вкладке). Если у клиента нет JS, он все равно откроет страницу, но не в окне, вызванном JS.

0 голосов
/ 17 декабря 2008

Мне кажется, проблема в том, что ваша ссылка указывает на пустой # (href="#"), который браузер будет интерпретировать как "верх страницы".

Попробуйте удалить атрибут href из вашего тега привязки. Атрибут onclick должен быть достаточным для того, что вам нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...