2012-05-30 5 views
8

Я хотел бы иметь возможность (из Javascript) перемещаться, как если бы была нажата ссылка (но не обязательно, когда нажата ссылка - может быть другое действие).Как перейти к URL-адресу, соблюдая при этом Ctrl-click открывает URL-адрес на новой вкладке?

Я знаю window.location.href = '...'; и window.location.replace('...');, но эти методы не позволяют пользователю указывать новое окно, новую вкладку и т. Д., Удерживая Cmd (OS X) или Ctrl. Я хотел бы иметь возможность сделать это без ручной проверки состояния этих ключей.

+0

вы когда-нибудь найти решение этой проблемы? благодаря! – Haroldo

+0

Нет, у меня еще нет! – Andy

ответ

5

Если вы хотите, чтобы обрабатывать как щелчки, нормальный и Ctrl щелкните это то, что я использую:

$("li").on("click", function(e){ 
    var url = $(this).find("a").attr("href"); 
    if(e.ctrlKey){ 
     $('<a href="'+ url + '" target="_blank"></a>')[0].click(); 
    } else { 
     document.location = url; 
    } 
    return false; 
}); 
+1

Любой способ не открывать это на переднем плане? – Andy

+0

Не работает в OS X, так как OS X использует metaKey. – x3al

4

Это работает только если вы делаете это из обработчика щелчка, инициированного пользователем, в противном случае, браузер будет определять его как ненужные всплывающий и блокировать его:

<div id="test">open in new tab</div> 

$('#test').click(function(){  
    openInNewTab('http://example.com'); 
}); 

function openInNewTab(url) 
{ 
    $('<a href="'+ url + '" target="_blank">open in new tab</a>')[0].click(); 
} 

Я думаю, что нет другого выбора так как это поведение безопасности.

+0

Это не идеально, но я возьму его. – Andy

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

  • Нет связанных вопросов^_^