Откройте несколько ссылок в Chrome сразу как новые вкладки
Я пытаюсь открыть несколько ссылок одновременно в Google Chrome на новых вкладках, но это не удается.
Проблемы:
- Заблокировано всплывающим окном
- Открывайте в новых окнах вместо вкладки после того, как пользователь разрешил всплывающее окно
С помощью этого я могу открывать несколько ссылок одновременно в Firefox:
<!DOCTYPE html>
<html ng-app="plunker">
<head>
<meta charset="utf-8">
<title>AngularJS Plunker</title>
<script>document.write('<base href="' + document.location + '" >');</script>
<link rel="stylesheet" href="style.css">
<script data-require="[email protected]" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.17/angular.min.js" data-semver="1.2.17"></script>
<script src="app.js"></script>
</head>
<body ng-controller="MainCtrl">
<button ng-click="openLinks()">Open</button>
</body>
</html>
Кроме того, я встретил человека, который нашел обходной путь.
Я пытался использовать setInterval
, чтобы попытаться открыть ссылки по отдельности, но это не сработало.
Ответы
Ответ 1
Вы можете сделать это в ванильном JavaScript:
<html>
<head>
<script type="text/javascript">
function open_win() {
window.open("http://www.java2s.com/")
window.open("http://www.java2s.com/")
}
</script>
</head>
<body>
<form>
<input type=button value="Open Windows" onclick="open_win()">
</form>
</body>
</html>
Вот более специфичная для Chrome реализация (если блокировщики всплывающих окон вам затрудняют):
var linkArray = []; // your links
for (var i = 0; i < linkArray.length; i++) {
// will open each link in the current window
chrome.tabs.create({
url: linkArray[i]
});
}
Вот несколько документов: https://developer.chrome.com/extensions/tabs
Ответ 2
Причина, по которой расширение браузера может это сделать, заключается в том, что расширения Chrome имеют доступ к специальному API Chrome, который позволяет использовать:
chrome.windows.create({tabid: n})
где createData
имеет значение tabid
больше, чем любая текущая вкладка (и вы можете найти наибольший ток tabid
с помощью chrome.windows.getAll()
).
Однако, с точки зрения того, что вы делаете это на своей странице (или где угодно, а не в расширении Chrome), это невозможно, поскольку открывается ли новое окно на новой вкладке полностью определяется пользовательскими настройками.
Ответ 3
Следующий код откроет несколько всплывающих окон при нажатии кнопки.
<html>
<head>
<title></title>
<script type="text/javascript">
function open_win() {
window.open("url","windowName","windowFeatures")
window.open("url","DifferentWindowName","windowFeatures")// different name for each popup
}
</script>
</head>
<body>
<form>
<input type=button value="Open Windows" onclick="open_win()">
</form>
</body>
вам нужно убедиться, что каждое имя окна отличается, иначе последнее всплывающее окно перезапишет его в предыдущем всплывающем окне. В результате вы получите одно всплывающее окно.
Ответ 4
Пользователь должен будет разрешить всплывающие окна, но в итоге я сделал это:
function openMultipleTabs(urlsArray){
urlsArray.forEach(function(url){
let link = document.createElement('a');
link.href = url;
link.target = '_blank';
link.click();
});
}
Ответ 5
Лучший способ открыть несколько вкладок или окон - использовать setTimeout()
с 500 мс.
window.open("facebook.com","one","windowFeatures")
setTimeout(function(){ window.open("facebook.com","two","windowFeatures") }, 500);
Ответ 6
Похоже, что расширение использует код ниже, чтобы открыть эти вкладки.
function openTab(urls, delay, window_id, tab_position, close_time) {
var obj = {
windowId: window_id,
url: urls.shift().url,
selected: false
}
if(tab_position != null) {
obj.index = tab_position
tab_position++;
}
chrome.tabs.create(obj, function(tab) {
if(close_time > 0) {
window.setTimeout(function() {
chrome.tabs.remove(tab.id);
}, close_time*1000);
}
});
if(urls.length > 0) {
window.setTimeout(function() {openTab(urls, delay, window_id, tab_position, close_time)}, delay*1000);
}
}
Если вы хотите взглянуть на код расширения для ссылки, вы найдете расширения в (для Windows) C:\Documents and Settings\*UserName*\Local Settings\Application Data\Google\Chrome\User Data\Default\Extensions