방문기록 다루기

방문기록 API를 사용하여 방문기록을 읽어오거나 삭제할 수 있습니다. 사용자가 자주 방문한 사이트를 분석하거나, 지금 보고있는 페이지 주소를 방문 기록에서 제거하는 기능을 구현하는데 사용할 수 있습니다.

매니페스트 설정

방문기록 API를 사용하려면 먼저 매니페스트 파일의 permissions 항목에 아래와 같이 history 항목울 추가해야 합니다.

"permissions": [
"history"
]

현재 탭의 방문 기록 활용

현재 활성 탭의 URL에 액세스 한 횟수를 알고 싶다고 가정해 보겠습니다.
아래와 같이 백그라운드 스크립트를 작성하면 툴바 버튼 클릭 시 현재 페이지에 방문한 횟수가 뱃지로 표시됩니다.

var count = 0;

whale.browserAction.onClicked.addListener(function (tab) {
whale.history.getVisits({
url: tab.url
}, function (visitItem) {
count = visitItem.length;

whale.browserAction.setBadgeBackgroundColor({
color: `#ff0000`
});

whale.browserAction.setBadgeText({
text: `${count}`
});

console.log(`The user has visited ${url} ${count} times`);
});
});

현재 활성화 된 탭의 URL을 얻어서 history.getVisits()에 전달합니다. 콜백 함수에서 지정한 URL에 대한 visitItem 객체의 배열을 인자로 받을 수 있습니다. visitItem 객체는 언제건 URL을 방문하는 시점에 생성됩니다. 이 객체의 숫자는 곧 사용자가 해당 URL을 방문한 횟수가 되므로 이 숫자로 툴바 버튼 뱃지를 업데이트 하는 코드입니다.

방문 기록에서 URL 삭제하기

방문 기록 기능을 사용하는 목적 중 하나는 특정 주소를 방문 기록에서 삭제하는 것입니다. whale.history.deleteUrl() 함수를 이용해 지정한 URL을 방문 기록에서 사용할 수 있습니다. 툴바 버튼 예제과 결합하여, 아래와 같은 내용으로 백그라운드 스크립트를 작성하면 현재 보고 있는 페이지의 주소를 방문 기록에서 삭제하도록 만들 수 있습니다.

whale.browserAction.onClicked.addListener(function (tab) {
whale.history.deleteUrl({
url: tab.url
});
});

필요하다면 목록을 만들어 deleteUrl() 을 반복하여 호출하면 여러 URL을 연속하여 삭제할 수 있습니다. 이 뿐 아니라 URL과 상관없이 특정 기간내의 방문 기록을 삭제하는 deleteRange() 함수와 모든 방문 기록을 삭제하는 deleteAll() 도 사용할 수 있습니다. 더 많은 API 함수는 방문기록 API 문서에서 확인할 수 있습니다.

페이지 전환 유형

페이지 전환 유형 (Transition Type) 은 사용자가 특정 URL에 어떤 경로로 접근했는지를 구분하는데 쓰입니다. 예를 들어, 웹 페이지의 링크를 클릭하여 접속한 페이지는 전환 유형이 link이고, 사용자가 직접 주소창에 입력하여 접속한 페이지의 전환 유형은 typed가 됩니다. 각 페이지를 어떤 경로로 접근했는지 구분하여 방문 기록을 분석에 참고할 수 있습니다.

페이지 전환 유형 설명
typed 사용자가 주소창에 URL을 입력하여 이 페이지로 이동한 경우입니다. 혹은 그 외의 다른 명시적 탐색 동작도 이 유형에 포함됩니다. 사용자가 URL을 보지 않고 추천 사이트를 선택한 경우는 generated 유형을 참조하세요.
auto_bookmark 사용자가 UI의 제안(예를 들어, 메뉴의 아이템)에 의해 이 페이지로 이동한 경우입니다.
auto_subframe 하위 프레임에서 페이지가 자동으로 이동한 경우입니다. 예를 들어, 상위 페이지 안에 광고를 포함하는 여러개 하위 프레임이 있는 경우 각 하위 프레임은 이러한 형태로 URL이 전환됩니다. 사용자는 해당 프레임의 페이지 전환을 인식하지 못하고 URL이 무엇인지에 대해서도 관심이 없을 수 있습니다. (manual_subframe를 참조하세요.)
manual_subframe 사용자의 명시적인 요청에 의해 하위 프레임의 페이지가 변경되고 방문 기록의 뒤로 / 앞으로 목록에 추가된 경우입니다. 사용자의 명시적 요청에 의한 페이지 전환이라는 것은 auto_subframe 유형보다 중요하다는 것을 의미합니다.
generated 사용자가 주소창에 URL이 아닌 문자열을 입력하여 발생한 페이지 전환입니다. 예를 들어, 전환된 페이지가 구글의 검색 결과 페이지일 수 있으나 사용자에게는 URL 대신 “Google에서 검색” 등의 항목으로 보일 수 있습니다. 이 경우, 사용자가 해당 URL을 직접 입력했거나 직접 URL을 본 것이 아니므로 typed 유형과는 구분됩니다. (keyword를 참조하세요.)
auto_toplevel 해당 페이지가 명령줄 인자 혹은 사용자 설정에 의해 시작 페이지로 지정된 경우입니다.
form_submit 사용자가 폼 양식을 작성하여 제출한 경우입니다. JavaScript 에서 폼의 제출을 직접 처리하는 경우가 있는데, 이러한 경우에는 해당되지 않을 수 있습니다.
reload 사용자가 새로고침 버튼을 누르거나 주소창에 엔터키를 눌러 페이지를 전환한 경우입니다. 세션 복원하기닫은 탭 열기 동작도 이 전환 방식에 해당합니다.
keyword 사용자가 입력한 특정 문자열에 의해 URL로 자동 변환된 경우입니다. 검색 서비스로 연결되는 keyword_generated 유형과 구분됩니다.
keyword_generated 키워드에 의해 생성된 웹 페이지 방문에 해당됩니다. (keyword를 참조하세요.)

모든 URL 전환은 방문기록에 VisitItem 형태로 저장됩니다. 이 항목은 URL, 시간 등 해당 방문에 대한 세부 정보를 저장하는 동시에 사용자가 해당 페이지에 어떻게 도달했는지를 알려주는 transition type 정보도 저장합니다.

확장앱에 단축키 설정하기 콘텍스트 메뉴 사용하기