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="angular.js@1.2.x" 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
링크를 개별적으로 열려고 했지만 작동하지 않았습니다.
바닐라 자바스크립트로 이 작업을 수행할 수 있습니다.
<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
브라우저 확장이 이 기능을 수행할 수 있는 이유는 Chrome 확장이 다음을 사용할 수 있는 특별한 Chrome API에 액세스할 수 있기 때문입니다.
chrome.windows.create({tabid: n})
어디에createData
가 있습니다.tabid
현재 탭보다 큰 값(가장 큰 전류를 찾을 수 있음)tabid
사용.chrome.windows.getAll()
).
그러나 새 탭에서 새 창이 열리는지 여부는 전적으로 사용자의 설정에 따라 결정되므로 페이지(또는 Chrome 확장이 아닌 곳)에서 실행할 수 없습니다.
여러 개의 탭이나 창을 여는 가장 좋은 방법은setTimeout()
500밀리초의
window.open("https://facebook.com", "one", windowFeatures);
setTimeout(function(){
window.open("https://facebook.com", "two", windowFeatures);
}, 500);
브라우저 설정에서 실제로 팝업을 허용해야 한다는 점을 언급할 가치가 있습니다.팝업을 열 수 있는지 묻는 브라우저 알림에 의존하지 마십시오.
다음 코드는 버튼 클릭 시 여러 개의 팝업이 열립니다.
<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>
각 창 이름이 서로 다른지 확인해야 합니다. 그렇지 않으면 마지막 팝업이 이전 팝업을 덮어씁니다.결과적으로 팝업 하나가 표시됩니다.
사용자는 팝업을 허용해야 하지만 저는 이렇게 했습니다.
function openMultipleTabs(urlsArray){
urlsArray.forEach(function(url){
let link = document.createElement('a');
link.href = url;
link.target = '_blank';
link.click();
});
}
setTimeout으로 실행 중인 간단한 솔루션이 있습니다. 아래를 확인하십시오.
function openMultipleTabs(urlsArray: string[]) {
urlsArray.forEach((url: string, key: number) => {
if (key === 0) {
window.open(url, `_blank_first_${key.toString()}`);
} else {
setTimeout(function () {
console.log("resolved", key);
window.open(url, `_blank_${key.toString()}`);
}, 1500 * key);
}
});
}
확장자가 아래 코드를 사용하여 탭을 여는 것 같습니다.
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
현대 브라우저(그리고 심지어 차단기가 있는 오래된 브라우저)는 절대로 이를 허용하지 않습니다(사용자 작업 하나, 새로운 탭 하나).해결책은 다음과 같습니다.
openInfoLinks = () => {
const urlsArray = [
`https://...`,
`https://...`,
`https://...`,
]
window.open(
urlsArray[this.linkCounter],
`_blank_${someIdentifier}_${this.linkCounter}`
);
this.linkCounter++;
setTimeout(() => {
this.linkCounter = 0;
}, 500);
}
사용자는 ctrl+클릭 버튼을 N번 클릭하여 빠른 순서로 링크를 열 수 있습니다.
언급URL : https://stackoverflow.com/questions/24364117/open-multiple-links-in-chrome-at-once-as-new-tabs
'programing' 카테고리의 다른 글
Excel VSTO 플러그인에서 행을 조롱하는 방법? (0) | 2023.10.26 |
---|---|
연락처 양식 7을 사용하여 워드프레스에서 제출할 FontAwesome 아이콘을 추가하는 방법? (0) | 2023.10.26 |
JSON_엑스트랙트마리아DB (0) | 2023.10.26 |
동적으로 설정 iframe src (0) | 2023.10.26 |
리피터 내부의 트랙터 요소 찾기 (0) | 2023.10.26 |