Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 哪种转换类型获得所有chrome浏览历史记录?_Javascript_Google Chrome Extension_Transition_Browser History - Fatal编程技术网

Javascript 哪种转换类型获得所有chrome浏览历史记录?

Javascript 哪种转换类型获得所有chrome浏览历史记录?,javascript,google-chrome-extension,transition,browser-history,Javascript,Google Chrome Extension,Transition,Browser History,我正在创建一个扩展来获取我的chrome浏览器的所有浏览历史记录。一切正常,但这里有一个小问题,我想检索所有的浏览历史,如“chrome://history/". 我无法检索所有的历史。 有人能告诉我哪种转换类型可以获得所有的浏览历史记录吗? 提前谢谢 下面是我代码的一小部分: function onAnchorClick(event) { chrome.tabs.create({ selected: true, url: event.srcElement.href })

我正在创建一个扩展来获取我的chrome浏览器的所有浏览历史记录。一切正常,但这里有一个小问题,我想检索所有的浏览历史,如“chrome://history/". 我无法检索所有的历史。 有人能告诉我哪种转换类型可以获得所有的浏览历史记录吗? 提前谢谢

下面是我代码的一小部分:

function onAnchorClick(event) {
  chrome.tabs.create({
    selected: true,
    url: event.srcElement.href
  });
  return false;
}

// Given an array of URLs, build a DOM list of those URLs in the
// browser action popup.
function buildPopupDom(divName, data) {
  var popupDiv = document.getElementById(divName);

  var ul = document.createElement('ul');
  popupDiv.appendChild(ul);

  for (var i = 0, ie = data.length; i < ie; ++i) {
    var a = document.createElement('a');
    a.href = data[i];
    a.appendChild(document.createTextNode(data[i]));
    a.addEventListener('click', onAnchorClick);

    var li = document.createElement('li');
    li.appendChild(a);

    ul.appendChild(li);
  }
}

// Search history to find up to ten links that a user has typed in,
// and show those links in a popup.
function buildTypedUrlList(divName) {
  // To look for history items visited in the last week,
  // subtract a week of microseconds from the current time.
  var microsecondsPerWeek = 1000 * 60 * 60 * 24 * 7;
  var oneWeekAgo = (new Date).getTime() - microsecondsPerWeek;

  // Track the number of callbacks from chrome.history.getVisits()
  // that we expect to get.  When it reaches zero, we have all results.
  var numRequestsOutstanding = 0;


  chrome.history.search({
      'text': '',              // Return every history item....
      'startTime': oneWeekAgo  // that was accessed less than one week ago.
    },
    function(historyItems) {
      // For each history item, get details on all visits.
      for (var i = 0; i < historyItems.length; ++i) {
        var url = historyItems[i].url;
        var processVisitsWithUrl = function(url) {
          // We need the url of the visited item to process the visit.
          // Use a closure to bind the  url into the callback's args.
          return function(visitItems) {
            processVisits(url, visitItems);
          };
        };
        chrome.history.getVisits({url: url}, processVisitsWithUrl(url));
        numRequestsOutstanding++;
      }
      if (!numRequestsOutstanding) {
        onAllVisitsProcessed();
      }
    });


  // Maps URLs to a count of the number of times the user typed that URL into
  // the omnibox.
  var urlToCount = {};

  // Callback for chrome.history.getVisits().  Counts the number of
  // times a user visited a URL by typing the address.
  var processVisits = function(url, visitItems) {
    for (var i = 0, ie = visitItems.length; i < ie; ++i) {
      // Ignore items unless the user typed the URL.
      if (visitItems[i].transition != 'typed') {
        //continue;
      }

      if (!urlToCount[url]) {
        urlToCount[url] = 0;
      }

      urlToCount[url]++;
    }

    // If this is the final outstanding call to processVisits(),
    // then we have the final results.  Use them to build the list
    // of URLs to show in the popup.
    if (!--numRequestsOutstanding) {
      onAllVisitsProcessed();
    }
  };
      // This function is called when we have the final list of URls to display.
  var onAllVisitsProcessed = function() {
    // Get the top scorring urls.
    urlArray = [];
for (var url in urlToCount) {
  urlArray.push(url);
    }

根据您在评论中的回复,假设您希望获取以
chrome://history
,您可以使用:


因此,您希望从
chrome://history
,是吗?是的。你有什么解决办法吗@海巴拉。但是我不能实现这个代码。它没有显示任何结果@海巴拉:问题就在这里。if(visitItems[i].transition!='typed'){//continue;}
    buildPopupDom(divName, urlArray.slice(0, 2000));
  };
}

document.addEventListener('DOMContentLoaded', function () {
  buildTypedUrlList("typedUrl_div");
});
chrome.history.search({text: "", maxResults: 10000}, function(results) {
    var ans = results.filter(function(result) {
        return result.startsWith("chrome://history");
    });
});