В расширении Chrome есть способ получить вкладку, на которой исполняется фрагмент javascript.
Обычный способ сделать это:
chrome.tabs.query({active: true, currentWindow: true}, function(tabs){});
Но естьпроблема здесь в том, что при выполнении этого кода вкладка, инициировавшая этот сценарий, может быть не в фокусе, и вы получите текущую активную вкладку.
Представьте себе следующую страницу расширения и сценарий:
URL: расширение chrome // my-extension-id / index.html
<script type='text/javascript' src='index.js'></script>
URL: расширение chrome // my-extension-id / index.js
setTimeout(function(){
chrome.tabs.query({active: true, currentWindow: true}, function(tabs){
console.log(tabs[0]);
});
},5000);
Если вы откроете URL-адрес с помощью html-файла и переключите вкладки менее чем за 5 секунд, вы получите новую вкладку в журнале консоли.Есть ли способ получить оригинальную вкладку?
Очевидное решение - сначала получить активную вкладку, а затем запланировать время ожидания, но все же есть случаи, когда вы можете открыть вкладку, не делая ее активной, например, щелкнув правой кнопкой мыши + открыть в новой вкладке.
Так есть ли способ получить идентификатор вкладки, которая инициировала скрипт?