2016-11-10 2 views
1

Можно ли обновить открытую вкладку в текущий момент, когда откроется новая вкладка, щелкнув ссылку на первой вкладке? В основном, конечный результат будет таким: первая вкладка открыта, щелкнута ссылка на странице, открытая на первой вкладке (с помощью средней кнопки мыши или чего-то подобного, только чтобы открыть ее во второй вкладка), ссылка, которая была нажата, открывается во второй вкладке, а затем первая вкладка автоматически обновляется. Надеюсь, я объяснил это понятным образом. Примечание. Я не создаю свой собственный сайт, я ищу, чтобы создать плагин для сайта с Greasemonkey.Обновить текущую открытую вкладку с Javascript при открытии новой вкладки

ответ

1

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

<a href="http://server.com/url-to-second-tab" target="_new">Link which opens new tab and refreshes current one</a> 

В JS скрипт вы добавить это (если вы используете JQuery, как вы заявили):

$(document).ready(function(){ 
    $('body').on('click','a',function(e){ 
     e.preventDefault() 
     // Open new tab - in old browsers, it opens a popup window 
     window.open($(this).attr('href'), '_blank'); 
     // reload current page 
     location.reload(); 
    }) 
}) 

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

В быстром тесте, открытом с помощью инструментов разработчика F12 на Chrome, и написать в консоли:

window.open('https://google.com', '_blank');location.reload(); 
+1

Кажется, единственное, что сработало, большое спасибо за это :) –

0

Да, это метод document.body.

Объявить окно:

w = window.open("yourUrl", "MYtest", "width=700, height=500"); 

И в функции вы можете получить доступ с помощью метода document.body:

html = "I Append my new html"; 
$(w.document.body).html(html); 
+0

я думаю, что я не объяснить это достаточно хорошо. Это должно показать лучше, что я имею в виду: http://i.imgur.com/6BPPVOY.png –

+0

Хорошо, извините, если вам трудно понять, чего вы хотите. Пожалуйста, добавьте более подробную информацию. возможно, лучшая картина. –

0

Вам нужно что-то вроде этого (JQuery код внутри):

<!doctype html> 
<html> 
<head> 
    <meta charset="utf-8"> 
    <title>Title</title> 
    <script src="https://code.jquery.com/jquery-1.12.4.min.js"></script> 
</head> 
<body> 
    <a id="myLink" href="http://www.google.com">Click me</a> 
    <div id="toUpdate">Not updated</div> 
</body> 

<script> 
$(function() { 
    $("#myLink").on("click", function(event) { 
     event.preventDefault(); 
     window.open(event.target.href, '_blank'); 
     $("#toUpdate").text("Go on google"); 
    }).on("mousedown", function(event) { 
     event.preventDefault(); 
     if (event.which === 2) 
      $("#toUpdate").text("Go on google"); 
    }); 
}); 
</script> 
</html> 

Отредактировано для добавления поддержки Firefox

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