Open multiple links in Chrome at once as new tabs

前端 未结 7 1529
小蘑菇
小蘑菇 2020-11-29 09:32

I\'m trying to open multiple links at once in Google Chrome in new tabs but it fails.

Problems:

  1. Blocked by popup
  2. Open in new windows instead o
相关标签:
7条回答
  • 2020-11-29 09:43

    Since modern browsers (and even old ones with blockers), will absolutely not allow this (one user action, one new tab). My solution was:

        openInfoLinks = () => {
            const urlsArray = [
                `https://...`,
                `https://...`,
                `https://...`,
            ]
            window.open(
                urlsArray[this.linkCounter],
                `_blank_${someIdentifier}_${this.linkCounter}`
            );
            this.linkCounter++;
            setTimeout(() => {
                this.linkCounter = 0;
            }, 500);
        }
    

    The user can open the links in quick succession with ctrl+click-ing the button N times.

    0 讨论(0)
  • 2020-11-29 09:50

    The following code will open multiple popUp on the button click.

    <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>
    

    you need to make sure that each window name is different, otherwise the last popup will overwrite it's previous popup. As a result you will end up with a single popup.

    0 讨论(0)
  • 2020-11-29 09:51

    The best way to open multiple tabs or windows is by using setTimeout() of 500ms.

    window.open("https://facebook.com", "one", windowFeatures);
    setTimeout(function(){
      window.open("https://facebook.com", "two", windowFeatures);
    }, 500);
    
    0 讨论(0)
  • 2020-11-29 09:52

    Looks like extension uses below code to open those tabs.

    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);
        }
    
    }
    

    If you want to take a look at the code of the extension for reference you will find the extensions in (for Windows) C:\Documents and Settings\*UserName*\Local Settings\Application Data\Google\Chrome\User Data\Default\Extensions

    0 讨论(0)
  • 2020-11-29 10:09

    You can do this in vanilla 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>
    

    Here is a more Chrome-specific implementation (if popup blockers are giving you difficulty):

    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]
        });
    }
    

    Here is some documentation: https://developer.chrome.com/extensions/tabs

    0 讨论(0)
  • 2020-11-29 10:09

    The reason that the browser extension can do it is because Chrome extensions have access to a special Chrome API, which lets you use:

    chrome.windows.create({tabid: n})
    

    where createData has a tabid value greater than any current tab (and you can find the greatest current tabid using chrome.windows.getAll()).

    However, in terms of doing it on your page (or anywhere that's not a Chrome extension), that's not possible, since whether or not a new window opens in a new tab is determined entirely by the user's settings.

    0 讨论(0)
提交回复
热议问题