首页 > 解决方案 > Javascript - 将 URL 数组修剪到根域

问题描述

我正在开发一个 chrome 扩展程序,可以复制浏览器中所有选项卡的 url。问题是我只能在所有数组中修剪一个 url。有没有办法可以在弹出窗口中输出所有根域?提前谢谢

选项卡 URL 示例

youtube.com/asdwea/asdsa
google.com/asdwew
facebook.com/qwea/asd

弹出窗口的结果应该是

youtube.com
google.com
facebook.com

popup.html

<html>
<script src="popup.js"></script>
<body>
  <div id="result"></div>
  <div id="count"> all</div>
  </body>
</html>

popup.js

chrome.windows.getAll({populate:true}, getAllOpenWindows);
function getAllOpenWindows(winData) {

  var tabs = [];
  for (var i in winData) {
    if (winData[i].focused === true) {
        var winTabs = winData[i].tabs;
        var totTabs = winTabs.length;
        for (var j=0; j<totTabs;j++) {
          tabs.push(winTabs[j].url+ "</br>");

        }
        var domain = tabs[1].replace('http://','').replace('https://','').split(/[/?#]/)[0];
    }

  }
  document.getElementById('count').innerHTML = tabs.length;
  document.getElementById('result').innerHTML = domain;

}

标签: javascriptarrays

解决方案


function getAllOpenWindows(winData) {

  var tabs = [];
  for (var i in winData) {
    if (winData[i].focused === true) {
        var domainStr = "";
        var winTabs = winData[i].tabs;
        var totTabs = winTabs.length;
        for (var j=0; j<totTabs;j++) {
          var str = winTabs[j].url+ "</br>";
          tabs.push(str);
          domainStr += str;
        }
        domainStr = domainStr.replace('http://','').replace('https://','').split(/[/?#]/)[0];
    }
  }
  document.getElementById('count').innerHTML = tabs.length;
  document.getElementById('result').innerHTML = domainStr;

}

我认为您需要的是连接所有字符串,就domainStr在这里。由于您的问题与split功能无关,因此我没有检查是否.replace('http://','').replace('https://','').split(/[/?#]/)[0];有效。


推荐阅读