댓글 검색 목록

[html] chrome extention - 6. 사용자 인터페이스 디자인

페이지 정보

작성자 운영자 작성일 20-11-02 12:48 조회 755 댓글 0

확장 사용자 인터페이스는 목적이 있고 최소한이어야 합니다. 확장 프로그램 자체와 마찬가지로 UI는 방해 받지 않고 탐색 환경을 사용자 지정하거나 향상 시켜야 합니다.


이 가이드에서는 필수 및 선택적 사용자 인터페이스 기능을 살펴 봅니다. 이를 사용하여 확장 내에서 다른 UI 요소를 구현하는 방법과 시기를 이해하십시오.


모든 페이지에서 확장 활성화 


대부분의 상황에서 확장 기능이 작동하는 경우 browser_action을 사용하십시오.


브라우저 동작 등록 


"browser_action"필드는 매니페스트에 등록됩니다.


  {
    "name": "My Awesome browser_action Extension",
    ...
    "browser_action": {
      ...
    }
    ...
  }

"browser_action"을 선언하면 아이콘 색상이 유지되어 사용자가 확장 프로그램을 사용할 수 있음을 나타냅니다.


배지 추가 


배지는 브라우저 아이콘 위에 최대 4 개의 문자가 있는 컬러 배너를 표시합니다. 매니페스트에서 "browser_action"을 선언하는 확장 프로그램에서만 사용할 수 있습니다.


확장 상태를 표시하려면 배지를 사용하십시오. 음료수 이벤트 샘플은 "ON"배지를 표시하여 사용자가 성공적으로 알람을 설정했음을 보여주고 확장 프로그램이 유휴 상태 일 때 아무것도 표시하지 않습니다.


Badge On Badge Off 


chrome.browserAction.setBadgeText를 호출하여 배지의 텍스트를 설정하고 chrome.browserAction.setBadgeBackgroundColor를 호출하여 배너 색상을 설정합니다.


  chrome.browserAction.setBadgeText({text: 'ON'});
  chrome.browserAction.setBadgeBackgroundColor({color: '#4688F1'});

선택한 페이지에서 확장 활성화 


확장 기능이 정의 된 상황에서만 사용할 수 있는 경우 page_action을 사용하십시오.


페이지 작업 선언 


"page_action"필드는 매니페스트에 등록됩니다.


  {
    "name": "My Awesome page_action Extension",
    ...
    "page_action": {
      ...
    }
    ...
  }

"page_action"을 선언하면 사용자가 확장 프로그램을 사용할 수 있을 때만 아이콘에 색상이 지정되고 그렇지 않으면 회색조로 표시됩니다.


Active Page Action Icon Unusable Page Action Icon 


확장 활성화를 위한 규칙 정의 


백그라운드 스크립트runtime.onInstalled 리스너에서 chrome.declarativeContent를 호출하여 확장 프로그램을 사용할 수 있는 경우에 대한 규칙을 정의합니다. URL 샘플 확장에 의한 페이지 작업은 URL에 'g'가 포함되어야 한다는 조건을 설정합니다. 조건이 충족되면 확장은 declarativeContent.ShowPageAction()을 호출합니다.


  chrome.runtime.onInstalled.addListener(function() {
    // Replace all rules ...
    chrome.declarativeContent.onPageChanged.removeRules(undefined, function() {
      // With a new rule ...
      chrome.declarativeContent.onPageChanged.addRules([
        {
          // That fires when a page's URL contains a 'g' ...
          conditions: [
            new chrome.declarativeContent.PageStateMatcher({
              pageUrl: { urlContains: 'g' },
            })
          ],
          // And shows the extension's page action.
          actions: [ new chrome.declarativeContent.ShowPageAction() ]
        }
      ]);
    });
  });

확장 활성화 또는 비활성화 


"page_action"을 사용하는 확장은 pageAction.showpageAction.hide를 호출하여 동적으로 활성화 및 비활성화 할 수 있습니다.


Mappy 샘플 확장은 웹 페이지에서 주소를 스캔하고 팝업의 정적 지도에 해당 위치를 표시합니다. 확장은 페이지 콘텐츠에 종속되기 때문에 어떤 페이지가 관련 될지 예측하는 규칙을 선언 할 수 없습니다. 대신 페이지에서 주소가 발견되면 pageAction.show를 호출하여 아이콘에 색상을 지정하고 해당 탭에서 확장 프로그램을 사용할 수 있음을 알립니다


  chrome.runtime.onMessage.addListener(function(req, sender) {
    chrome.storage.local.set({'address': req.address})
    chrome.pageAction.show(sender.tab.id);
    chrome.pageAction.setTitle({tabId: sender.tab.id, title: req.address});
  });

확장 아이콘 제공 


확장 프로그램을 나타내려면 하나 이상의 아이콘이 필요합니다. BMP, GIF, ICO 및 JPEG를 포함하여 WebKit에서 지원하는 모든 형식이 허용되지만 PNG 형식의 아이콘을 제공하면 최상의 시각적 결과를 얻을 수 있습니다.


도구 모음 아이콘 지정 


툴바와 관련된 아이콘은 manifest의 browser_action 또는 page_action 아래의 "default_icon"필드에 등록됩니다. 16-dip 공간에 맞게 확장하려면 여러 크기를 포함하는 것이 좋습니다. 최소한 16x16 및 32x32 크기가 권장됩니다.

  {
    "name": "My Awesome page_action Extension",
    ...
    "page_action": {
      "default_icon": {
        "16": "extension_toolbar_icon16.png",
        "32": "extension_toolbar_icon32.png"
      }
    }
    ...
  }

모든 아이콘은 정사각형이거나 왜곡 될 수 있습니다. 아이콘이 제공되지 않으면 Chrome은 도구 모음에 일반 아이콘을 추가합니다.


추가 아이콘 생성 및 등록 


도구 모음 외부에서 사용할 수 있도록 다음 크기의 추가 아이콘을 포함합니다.


 Icon Size

 Icon Use

 16x16

 확장 프로그램 페이지의 파비콘

 32x32

 Windows 컴퓨터에는 종종 이 크기가 필요합니다. 이 옵션을 제공하면 크기 왜곡이 48x48 옵션을 축소하는 것을 방지 할 수 있습니다.

 48x48

 확장 관리 페이지에 표시

 128x128

 설치 및 Chrome 웹 스토어에 표시


"아이콘"필드 아래의 매니페스트에 아이콘을 등록합니다.

  {
    "name": "My Awesome Extension",
    ...
    "icons": {
      "16": "extension_icon16.png",
      "32": "extension_icon32.png",
      "48": "extension_icon48.png",
      "128": "extension_icon128.png"
    }
    ...
  }

추가 UI 기능 


Popup 


팝업은 사용자가 도구 모음 아이콘을 클릭 할 때 특수 창에 표시되는 HTML 파일입니다. 팝업은 웹 페이지와 매우 유사하게 작동합니다. 스타일 시트 및 스크립트 태그에 대한 링크를 포함 할 수 있지만 인라인 JavaScript는 허용하지 않습니다.


음료수 이벤트 예제 팝업은 사용 가능한 타이머 옵션을 표시합니다. 사용자는 제공된 버튼 중 하나를 클릭하여 알람을 설정합니다.


Popup sample screenshot 


  <html>
    <head>
      <title>Water Popup</title>
    </head>
    <body>
        <img src='./stay_hydrated.png' id='hydrateImage'>
        <button id='sampleSecond' value='0.1'>Sample Second</button>
        <button id='15min' value='15'>15 Minutes</button>
        <button id='30min' value='30'>30 Minutes</button>
        <button id='cancelAlarm'>Cancel Alarm</button>
     <script src="popup.js"></script>
    </body>
  </html>

팝업은 브라우저 작업 또는 페이지 작업에서 매니페스트에 등록 할 수 있습니다.


  {
    "name": "Drink Water Event",
    ...
    "browser_action": {
      "default_popup": "popup.html"
    }
    ...
  }

팝업은 browserAction.setPopup 또는 pageAction.setPopup을 호출하여 동적으로 설정할 수도 있습니다.


  chrome.storage.local.get('signed_in', function(data) {
    if (data.signed_in) {
      chrome.browserAction.setPopup({popup: 'popup.html'});
    } else {
      chrome.browserAction.setPopup({popup: 'popup_sign_in.html'});
    }
  });

Tooltip 


도구 설명을 사용하여 브라우저 아이콘 위로 마우스를 가져갈 때 사용자에게 간단한 설명이나 지침을 제공합니다.

Tooltip 

툴팁은 매니페스트의 "default_title"필드 browser_action 또는 page_action에 등록됩니다.

  {
  "name": "Tab Flipper",
   ...
    "browser_action": {
      "default_title": "Press Ctrl(Win)/Command(Mac)+Shift+Right/Left to flip tabs"
    }
  ...
 }

도구 설명은 browserAction.setTitlepageAction.setTitle을 호출하여 설정하거나 업데이트 할 수도 있습니다.


  chrome.browserAction.onClicked.addListener(function(tab) {
    chrome.browserAction.setTitle({tabId: tab.id, title: "You are on tab:" + tab.id});
  });

특수화 된 로케일 문자열은 국제화로 구현됩니다. _locales라는 폴더 내에 언어 별 메시지를 보관할 디렉토리를 만듭니다. 다음 이미지는 영어 및 스페인어 로케일을 지원하는 확장자의 파일 경로를 보여줍니다.

File structure for locale strings 


각 언어의 messages.json 내에서 메시지 형식을 지정합니다.

  {
    "__MSG_tooltip__": {
        "message": "Hello!",
        "description": "Tooltip Greeting."
    }
  }
  {
    "__MSG_tooltip__": {
        "message": "Hola!",
        "description": "Tooltip Greeting."
    }
  }

현지화를 사용하려면 메시지 대신 도구 설명 필드에 메시지 이름을 포함하십시오.

  {
  "name": "Tab Flipper",
   ...
    "browser_action": {
      "default_title": "__MSG_tooltip__"
    }
  ...
 }

Omnibox 


사용자는 검색 주소창을 통해 확장 기능을 호출 할 수 있습니다. 매니페스트에 "검색 주소창"필드를 포함하고 키워드를 지정합니다. 검색 주소창 새 탭 검색 샘플 확장은 "nt"를 키워드로 사용합니다.

  {
    "name": "Omnibox New Tab Search",\
    ...
    "omnibox": { "keyword" : "nt" },
    "default_icon": {
      "16": "newtab_search16.png",
      "32": "newtab_search32.png"
    }
    ...
  }

사용자가 검색 주소창에 "nt"를 입력하면 확장 프로그램이 활성화됩니다. 이를 사용자에게 알리기 위해 제공된 16x16 아이콘을 회색조로 표시하고 확장 이름 옆의 검색 주소창에 포함합니다.

Active Omnibox Extension 


확장 프로그램은 omnibox.onInputEntered 이벤트를 수신합니다. 실행 된 후 확장 프로그램은 사용자 항목에 대한 Google 검색이 포함 된 새 탭을 엽니다.

chrome.omnibox.onInputEntered.addListener(function(text) {
  // Encode user input for special characters , / ? : @ & = + $ #
  var newURL = 'https://www.google.com/search?q=' + encodeURIComponent(text);
  chrome.tabs.create({ url: newURL });
});

Context Menu 


매니페스트에서 "contextMenus"권한을 부여하여 새 컨텍스트 메뉴 옵션을 추가합니다.

  {
    "name": "Global Google Search",
    ...
    "permissions": ["contextMenus", "storage"],
    "icons": {
      "16": "globalGoogle16.png",
      "48": "globalGoogle48.png",
      "128": "globalGoogle128.png"
   }
   ...
  }

16x16 아이콘이 새 메뉴 항목 옆에 표시됩니다.

Context Menu Icon 

백그라운드 스크립트에서 contextMenus.create를 호출하여 컨텍스트 메뉴를 만듭니다. 이는 runtime.onInstalled 리스너 이벤트에서 수행되어야 합니다.

  chrome.runtime.onInstalled.addListener(function() {
    for (let key of Object.keys(kLocales)) {
      chrome.contextMenus.create({
        id: key,
        title: kLocales[key],
        type: 'normal',
        contexts: ['selection'],
      });
    }
  });
  const kLocales = {
    'com.au': 'Australia',
    'com.br': 'Brazil',
    'ca': 'Canada',
    'cn': 'China',
    'fr': 'France',
    'it': 'Italy',
    'co.in': 'India',
    'co.jp': 'Japan',
    'com.ms': 'Mexico',
    'ru': 'Russia',
    'co.za': 'South Africa',
    'co.uk': 'United Kingdom'
  };

글로벌 Google 검색 컨텍스트 메뉴 예제는 locales.js의 목록에서 여러 옵션을 만듭니다. 확장 프로그램에 컨텍스트 메뉴가 두 개 이상 포함 된 경우 Chrome은 자동으로 단일 상위 메뉴로 축소합니다.

Multiple Context Menus will Collapse 


Commands 


확장은 특정 명령을 정의하고 키 조합에 바인딩 할 수 있습니다. "commands"필드 아래 매니페스트에 하나 이상의 명령을 등록합니다.

  {
    "name": "Tab Flipper",
    ...
    "commands": {
      "flip-tabs-forward": {
        "suggested_key": {
          "default": "Ctrl+Shift+Right",
          "mac": "Command+Shift+Right"
        },
        "description": "Flip tabs forward"
      },
      "flip-tabs-backwards": {
        "suggested_key": {
          "default": "Ctrl+Shift+Left",
          "mac": "Command+Shift+Left"
        },
        "description": "Flip tabs backwards"
      }
    }
    ...
  }

명령을 사용하여 새로운 또는 대체 브라우저 바로 가기를 제공 할 수 있습니다. Tab Flipper 샘플 확장은 백그라운드 스크립트에서 commands.onCommand 이벤트를 수신하고 등록 된 각 조합에 대한 기능을 정의합니다.

  chrome.commands.onCommand.addListener(function(command) {
    chrome.tabs.query({currentWindow: true}, function(tabs) {
      // Sort tabs according to their index in the window.
      tabs.sort((a, b) => { return a.index < b.index; });
      let activeIndex = tabs.findIndex((tab) => { return tab.active; });
      let lastTab = tabs.length - 1;
      let newIndex = -1;
      if (command === 'flip-tabs-forward')
        newIndex = activeIndex === 0 ? lastTab : activeIndex - 1;
      else  // 'flip-tabs-backwards'
        newIndex = activeIndex === lastTab ? 0 : activeIndex + 1;
      chrome.tabs.update(tabs[newIndex].id, {active: true, highlighted: true});
    });
  });

명령은 확장과 함께 특별히 작동하는 키 바인딩을 만들 수도 있습니다. Hello Extensions 예제는 팝업을 여는 명령을 제공합니다.

  {
    "name": "Hello Extensions",
    "description" : "Base Level Extension",
    "version": "1.0",
    "browser_action": {
      "default_popup": "hello.html",
      "default_icon": "hello_extensions.png"
    },
    "manifest_version": 2,
    "commands": {
      "_execute_browser_action": {
        "suggested_key": {
          "default": "Ctrl+Shift+F",
          "mac": "MacCtrl+Shift+F"
        },
        "description": "Opens hello.html"
      }
    }
  }

확장은 broswer_action을 정의하기 때문에 명령에 "execute_browser_action"을 지정하여 백그라운드 스크립트를 포함하지 않고 팝업 파일을 열 수 있습니다. page_action을 사용하는 경우 "execute_page_action"으로 대체 할 수 있습니다. 브라우저 및 확장 명령은 모두 동일한 확장에서 사용할 수 있습니다.


페이지 재정의(Override Pages) 


확장은 히스토리, 새 탭 또는 책갈피 웹 페이지를 사용자 정의 HTML 파일로 대체하고 대체 할 수 있습니다. 팝업과 마찬가지로 특수 로직 및 스타일을 포함 할 수 있지만 인라인 JavaScript는 허용하지 않습니다. 단일 확장은 가능한 세 페이지 중 하나만 재정의 하도록 제한됩니다.


'chrome_url_overrides'필드 아래 매니페스트에 재정의 페이지를 등록합니다.

  {
    "name": "Awesome Override Extension",
    ...

    "chrome_url_overrides" : {
      "newtab": "override_page.html"
    },
    ...
  }

"newtab"필드는 해당 페이지를 재정의 할 때 "책갈피"또는 "기록"으로 대체되어야 합니다.


  <html>
   <head>
    <title>New Tab</title>
   </head>
   <body>
      <h1>Hello World</h1>
    <script src="logic.js"></script>
   </body>
  </html>


댓글목록 0

등록된 댓글이 없습니다.

웹학교 로고

온라인 코딩학교

코리아뉴스 2001 - , All right reserved.