사용자가 옵션 페이지를 제공하여 확장의 동작을 사용자 정의 할 수 있습니다. 사용자는 도구 모음에서 확장 프로그램 아이콘을 마우스 오른쪽 버튼으로 클릭 한 다음 옵션을 선택하거나 chrome://extensions의 확장 관리 페이지로 이동하여 원하는 확장을 찾은 다음 세부 정보를 클릭 한 다음 옵션 링크를 선택하여 확장 옵션을 볼 수 있습니다.
옵션 페이지 작성
아래는 예제 옵션 페이지입니다.
<!DOCTYPE html> <html> <head><title>My Test Extension Options</title></head> <body> Favorite color: <select id="color"> <option value="red">red</option> <option value="green">green</option> <option value="blue">blue</option> <option value="yellow">yellow</option> </select> <label> <input type="checkbox" id="like"> I like colors. </label> <div id="status"></div> <button id="save">Save</button> <script src="options.js"></script> </body> </html>
storage.sync API를 사용하여 여러 기기에서 사용자가 선호하는 옵션을 저장합니다.
// Saves options to chrome.storage function save_options() { var color = document.getElementById('color').value; var likesColor = document.getElementById('like').checked; chrome.storage.sync.set({ favoriteColor: color, likesColor: likesColor }, function() { // Update status to let user know options were saved. var status = document.getElementById('status'); status.textContent = 'Options saved.'; setTimeout(function() { status.textContent = ''; }, 750); }); } // Restores select box and checkbox state using the preferences // stored in chrome.storage. function restore_options() { // Use default value color = 'red' and likesColor = true. chrome.storage.sync.get({ favoriteColor: 'red', likesColor: true }, function(items) { document.getElementById('color').value = items.favoriteColor; document.getElementById('like').checked = items.likesColor; }); } document.addEventListener('DOMContentLoaded', restore_options); document.getElementById('save').addEventListener('click', save_options);
옵션 페이지 동작 선언
확장 옵션 페이지에는 전체 페이지와 임베디드 옵션 두 가지 유형이 있습니다. 옵션 유형은 매니페스트에서 선언 된 방식에 따라 결정됩니다.
전체 페이지 옵션
확장의 옵션 페이지가 새 탭에 표시됩니다. options_page 필드에 등록 된 옵션 HTML 파일이 나열됩니다.
{ "name": "My extension", ... "options_page": "options.html", ... }
임베디드 옵션
임베디드 옵션을 사용하면 임베디드 상자 내부의 확장 관리 페이지를 벗어나지 않고도 확장 옵션을 조정할 수 있습니다. 포함 된 옵션을 선언하려면 open_in_tab 키를 false로 설정하여 확장 매니페스트의 options_ui 필드 아래에 HTML 파일을 등록합니다.
{ "name": "My extension", ... "options_ui": { "page": "options.html", "open_in_tab": false }, ... }
차이점 고려
chrome : // extensions에 포함 된 옵션 페이지에는 자체 탭에서 호스팅 되지 않는 것과 관련된 미묘한 동작 차이가 있습니다.
옵션 페이지에 연결
확장 프로그램은 chrome.runtime.openOptionsPage()를 호출하여 옵션 페이지에 직접 연결할 수 있습니다.
<button id="go-to-options">Go to options</button>
document.querySelector('#go-to-options').addEventListener(function() { if (chrome.runtime.openOptionsPage) { chrome.runtime.openOptionsPage(); } else { window.open(chrome.runtime.getURL('options.html')); } });
Tabs API
확장 프로그램 포함 옵션 페이지 코드는 탭 내에서 호스팅 되지 않으므로 Tabs API 사용 방법에 영향을 줍니다.
옵션 페이지가 포함 된 탭을 조작해야 하는 경우 runtime.connect 및 runtime.sendMessage를 사용하면 이러한 제한 사항을 해결할 수 있습니다.
Messaging APIs
확장 프로그램의 옵션 페이지가 runtime.connect 또는 runtime.sendMessage를 사용하여 메시지를 보내는 경우 보낸 사람의 탭이 설정되지 않고 보낸 사람의 URL이 옵션 페이지 URL이 됩니다.
Sizing
포함 된 옵션은 페이지 콘텐츠에 따라 자체 크기를 자동으로 결정해야 합니다. 그러나 포함 된 상자는 일부 유형의 콘텐츠에 적합한 크기를 찾지 못할 수 있습니다. 이 문제는 창 크기에 따라 콘텐츠 모양을 조정하는 옵션 페이지에서 가장 일반적입니다.
이것이 문제인 경우 옵션 페이지에 대해 고정 된 최소 크기를 제공하여 포함 된 페이지가 적절한 크기를 찾을 수 있도록 합니다.
등록된 댓글이 없습니다.