Google Chrome открывает window.open (someurl) просто отлично ... но страница / окно с нажатой ссылкой также открывает someurl.com - PullRequest
1 голос
/ 16 декабря 2010

Как видно из заголовка "Google Chrome открывает window.open (someurl) просто отлично ... но страница / окно с нажатой ссылкой также открывает someurl.com.

Когда я нажимаю ссылку "Нажмите здесь" с прикрепленным вызовом onclick = "shpop ...", мое всплывающее окно корректно открывает /facebook_login.php '... НО ... в то же время, исходное окно открывает /facebook_login.php тоже!

Это происходит в Chrome и IE, но FF в порядке и делает только то, что я хочу ..

У меня есть эта ссылка:

<a href="/facebook_login.php" onclick="shpop('','','loginfb','');return false">Click here</a>

Я знаю, что могу удалить href = "/ facebook_login.php" и заменить на href = "#" .. но мне нужна ссылка, чтобы работать, если js отключен.

У меня есть этот код js, импортированный в мой тег:

function shpop(u,t,w,v)  
{
    var text = encodeURI(t);
    var uri = encodeURI(u);
    var h = document.location.href;
    h = encodeURI(h);
    var wwidth='600'; /*popup window width*/
    var wheight='300'; /*popup window height*/
    if(v=='' || undefined==v)v=document.domain; /*popup name/title */

   switch(w){
       case 'loginfb':
           var url = '/facebook_login.php';
           wwidth='980';
           wheight='600';
       break;
   }

    window.open(url,v,'width='+wwidth+',height='+wheight);
    return false
}

Есть идеи?

Ответы [ 3 ]

0 голосов
/ 16 декабря 2010

что с возвращением false и наличием false в onclick?

This

onclick="shpop('','','loginfb','');return false"

Просто должно быть

onclick="return shpop('','','loginfb','');"

Если onclick возвращает любоеошибка, ссылка все равно откроется.Вы видите какие-либо ошибки в консоли JavaScript?Интересно, браузеры волнуются о каком-либо.в имени окна от использования document.domain.Попробуйте дать ему имя.

onclick="return shpop('','','loginfb','foobar');"
0 голосов
/ 09 декабря 2014

Вот самое простое решение:

<a href="/facebook_login.php" 
    target="FBpopup" 
    onclick="window.open('about:blank','FBpopup','width=980,height=600')">
    Click here
</a>

Вам не нужно return false, потому что вы действительно хотите, чтобы ссылка выполнялась.

Хитрость заключается в использовании одно и то же имя окна как в window.open, так и в целевом объекте ссылки.

window.open создаст всплывающее окно, после чего ваша страница входа будет работать в этом всплывающем окне.

Если всплывающие окна заблокированы или Javascript отключен, ваша страница входа откроется в новой вкладке.

0 голосов
/ 16 декабря 2010

Согласно последним статистическим данным браузера - в последний раз, когда его измеряли в любом случае (2008), только 5% пользователей отключили JavaScript. В настоящее время это, вероятно, будет меньше. Учтите, что во всех браузерах он включен по умолчанию. Поэтому, как правило, только опытные пользователи по какой-либо причине решают отключить JavaScript, и поэтому понимают, что есть вероятность, что любой веб-сайт, который они посещают, не будет работать должным образом - Facebook, Google, Amazon - в наши дни все используют JavaScript. Вполне допустимо предположить, что пользователь использует его, с одной общей <noscript> версией в начале вашей страницы для этих пользователей, если вы действительно хотите охватить все свои базы:)

...