programing

Chrome에서 여러 링크를 새 탭으로 한 번에 열기

newstyles 2023. 10. 26. 20:48

Chrome에서 여러 링크를 새 탭으로 한 번에 열기

구글 크롬에서 여러 링크를 한 번에 새 탭으로 열려고 하는데 실패합니다.

문제:

  1. 팝업에 의해 차단됨
  2. 사용자가 팝업을 허용한 후 탭 대신 새 창에서 열기

를 통해 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);

브라우저 설정에서 실제로 팝업을 허용해야 한다는 점을 언급할 가치가 있습니다.팝업을 열 수 있는지 묻는 브라우저 알림에 의존하지 마십시오.

enter image description here

다음 코드는 버튼 클릭 시 여러 개의 팝업이 열립니다.

<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