U E D R , A S I H C RSS

Plugin/Chrome/네�버사전


1. 참여�

2. 프로그램 목�


  • í�¬ë¡¬ì�€ 아시다시피 Plug-inì�„ 설치할수 있다 extension programì�´ë�¼ê³ ë�„ 하는것 ê°™ì�€ë�° ë­� 쉽게 만들수 있는것 같다. 논문ì�„ 살펴보는ë�° 사전기능ì�„ 쓰기위해 마우스를 올렸지만 실행ì�´ ë�˜ì§€ 않았다.. 화난다=ã…‚= 그래서 ì‚´ì§� 살펴보니 .json확장ìž�ë�„ ë³´ì�´ëŠ”ê²ƒ 같지만 문법ë�„ 간단하고 CSS와 HTML. DOM형ì‹�ì�˜ 문서구조ë�„ 파악하고 있으니 어렵지 않ì�„것 같았다. 그래서 간단히 네ì�´ë²„ ë§�í�¬ë¥¼ ê¸�어와 HTML elementë¶„ì„�ì�„ 통해 Naver사전ì�„ 하는 Plug-inì�„ 만들어볼까 한다.

3. 필요 기술

4. 프로그램 �지


4.1. 꼭 �야하는 중요하다고 ��하는 것


  • Chrome extention overview
    1. Overview
    2. Tutorial (getstarted) with fileset(manifest.json,.js,.html)
    3. manifest.json� attribute.
    4. Contents policy security. 확장기능 작성하는� 꼭 알아야하는 작성법

4.2. 처� 시작해보�


4.2.1. 기본기


�롬� 개발� API주소는 지금 사�트 �전� 하고있는� 맨앞� code가 developer로 �전하는것 같았다. 여튼 index� 주소는 다�과 같다.


Tutorial� 진행하면 다�과 같다.


그런� �거 확장� 어떻게 실행시켜보�면

Chrome브ë�¼ìš°ì €ì—�서 환경설정(우측ìƒ�단ì—� 렌치모양) -> ë�„구 -> 확장프로그램 -> 우측ìƒ�단 개발ìž� 모드 Check -> ì••ì•í•´ì œë�œ 확장프로그램 로드 를 하면 ë‚´ 컴퓨터ì—� 있는 플러그ì�¸ í�´ë�” 째로 올릴수 있다.

4.2.2. 튜토리얼 따�해보기


flickr�서 permission� 받아 사진� �어오는 플러그�� 만드는것 같다. 파�구성� HTML안� 스타�� �용하는 CSS. AJAX, Javascript를 �용하여 (AJAX� 정�를 알아보아야겠다 ) 내용� 구성한다. json� 통해 뭘 하는건가. �미롭군.


�어로 보는게 � �세하지만 난 한국���. 간단히 �하�면 �터넷�서 �료를 주고받�때 그 �료형�� 정�하는 문서�� javascript구문� 사용하는 파��다. xml보다 web�서 효과��기 때문� web��서 쓰�다고 한다. 좋�거 배우네.


Ajax는 비�기�으로 ��터를 주고받기 위해 (A는 Asyncronous) HTML과 CSS �� 정보 표시를 위한 �� 언어와 DOM문서형 구조를 가진 XML, json만� Ajax를 뜻하는 것� 아니� �런 조합으로 �루어진 비�기 웹 어플리케�션 기법� 뜻한다.

� 여기까지 용어정리 �나.

� �제 따�해보�.

  • ë”°ë�¼í•˜ë‹¤ê°€ 실수한ì � : manifest.json파ì�¼ì�„ menifest.jsonì�´ë�¼ 해서 updateê°€ 안ë�¨. jsonì •ì�˜í• ë•Œ 다ì�Œ element를 위해 , 를 붙여야하는ë�° 안붙여서 ì—�러. 그렇지만 나머지는 복붙해서 잘 가져옴.

4.2.2.1. 첫번째 작성 예제


  • popup.js




// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

var req = new XMLHttpRequest();
req.open(
    "GET",
    "http://api.flickr.com/services/rest/?" +
        "method=flickr.photos.search&" +
        "api_key=90485e931f687a9b9c2a66bf58a3861a&" +
        "text=hello%20world&" +
        "safe_search=1&" +  // 1 is "safe"
        "content_type=1&" +  // 1 is "photos only"
        "sort=relevance&" +  // another good one is "interestingness-desc"
        "per_page=20",
    true);
req.onload = showPhotos;
req.send(null);

function showPhotos() {
  var photos = req.responseXML.getElementsByTagName("photo");

  for (var i = 0, photo; photo = photos[i]; i++) {
    var img = document.createElement("image");
    img.src = constructImageURL(photo);
    document.body.appendChild(img);
  }
}

// See: http://www.flickr.com/services/api/misc.urls.html
function constructImageURL(photo) {
  return "http://farm" + photo.getAttribute("farm") +
      ".static.flickr.com/" + photo.getAttribute("server") +
      "/" + photo.getAttribute("id") +
      "_" + photo.getAttribute("secret") +
      "_s.jpg";
}


  • popup.html




<!doctype html>
<html>
  <head>
    <title>Getting Started Extension's Popup</title>
    <style>
      body {
        min-width:357px;
        overflow-x:hidden;
      }

      img {
        margin:5px;
        border:2px solid black;
        vertical-align:middle;
        width:75px;
        height:75px;
      }
    </style>

    <!-- JavaScript and HTML must be in separate files for security. -->
    <script src="popup.js"></script>
  </head>
  <body>
  </body>
</html>

  • manifest.json



{
  "name": "My First Extension",
  "version": "1.0",
  "manifest_version": 2,
  "description": "The first extension that I made.",
  "browser_action": {
    "default_icon": "icon.png",
    "default_popup": "popup.html"
  },
  "permissions": [
    "http://api.flickr.com/"
  ]
}

4.2.3. 내가 �하는것


  • 마우스를 올리고 몇초가 지나면 Text를 ì�½ì–´ì„œ ìž‘ì�€ íŒ�ì—…ì°½ì�„ ë�„움 - 3순위
  • í…�스트를 ë�”블í�´ë¦­í•˜ë©´ íŒ�ì—…ì�´ ìž�ë�™ì—´ë¦¬ë©´ì„œ 사전ì�„ ë�„워줌 - 1순위

4.2.3.1. �릭하면 �업창 �우기 구현


  • window.open함수를 ì�´ìš©í•˜ì—¬ body를 ë�”블 í�´ë¦­í•˜ë©´ 새로운 íŒ�ì—…ì°½ì�„ ë�„운다.

  • index.html


  • <html>
    <head>
    <script language="javascript">
    <!--
    function na_open_window(name, url, left, top, width, height, toolbar, menubar, statusbar, 
    
    scrollbar, resizable)
    {
      toolbar_str = toolbar ? 'yes' : 'no';
      menubar_str = menubar ? 'yes' : 'no';
      statusbar_str = statusbar ? 'yes' : 'no';
      scrollbar_str = scrollbar ? 'yes' : 'no';
      resizable_str = resizable ? 'yes' : 'no';
      window.open(url, name, 'left='+left+',top='+top+',width='+width+',height='+height
    
    +',toolbar='+toolbar_str+',menubar='
    +menubar_str+',status='+statusbar_str+',scrollbars='+scrollbar_str
    
    +',resizable='+resizable_str);
    }
    
    
    // -->
    </script>
    </head>
    <body ondblclick = "na_open_window('win', 'popup.html', 50, 100, 100, 30, 0, 0, 0, 0, 0)"> 
    
    </body>
    </html>
    

  • 위ì�˜ na-open_window는 ìž„ì�˜ë¡œ 만든 함수긴한ë�° status_bar나 기타 스í�¬ë¡¤ì�´ 가능하지 않ì�€ popupì�„ 만들고 있다. 0ì�€ false니까.
  • javascriptì�˜ 다른 예제를 확ì�¸í•˜ë‹ˆ document.body.ondblclick = 함수명 ì�„ 작성하면 똑같ì�´ ìž‘ë�™ë�˜ëŠ”ê²ƒì�„ 확ì�¸í–ˆë‹¤.

  • popup.html

  • <html>
    Hello World!
    
    </html>
    

    4.2.4. Google Chrome extension Sample


    4.2.4.1. History 지워주는 extension

    • 충격과 ê³µí�¬ë‹¤. 구글ì—�서 제공해준 Sampleì�´ 잘못ë�˜ìžˆì–´ì„œ 한참ì�„ 해멨다.


    {
      "name" : "BrowsingData API: Basics",
      "version" : "1.1",
      "description" : "A trivial usage example.",
      "permissions": [
        "browsingData"
        
      ],
      "browser_action": {
         "default_icon": "icon.png",
         "default_popup": "popup.html" //�게 그냥 popup으로 �있었다. browser_action� 보니 default_popup� 해야지 action icon� 눌렀�때 popup� 뜬다.
      },
      "manifest_version": 2
    }
    
    

    4.2.4.2. Contents policy security

    • ì�´ê±´ 매우 ê°•ì¡°ë�˜ì–´ì•¼í•œë‹¤.


  • inline script를 cross script attackì�„ 방지하기 위해 htmlê³¼ contents를 분리 시킨다고 ì�¨ìžˆë‹¤. ì�´ 규정ì—� 따르면 inline으로 작성ë�˜ì–´ì„œ ë�Œì•„가는 javascript는 모ë‘� .js파ì�¼ë¡œ 빼서 만들어야한다. <div OnClick="func()"> 와 ê°™ì�€ html 태그안ì�˜ inline ì�´ë²¤íЏ attachë�„ 안ë�˜ê¸° 때문ì—� documentì�˜ 쿼리를 날리ë�˜ê°€ element를 찾아서 document.addEventListener 함수를 통해 event를 받아 functionì�´ ì—°ê²°ë�˜ê²Œ 해야한다. ì•„ ì�´ê±° 힘드네. ë�¼ëŠ” ìƒ�ê°�ì�´ 들었다.

  • 4.3. 헤메는 것


    • Chrome extentionì�˜ overview를 ì�½ì–´ë³´ì•˜ëŠ”ë�° 다양한 기능ì�„ ì§€ì›�한다. 그중ì—� extentionì—�서 기본으로 제공하는 background.htmlì�´ë�¼ëŠ”ê²ƒì�´ 있는ë�° ì�´ê²ƒì�´ extention기능으로 넣어놓ì�€ script를 모ë‘� í�¬í•¨í•˜ê³  ë©”ì�¸ 페ì�´ì§€ 밑단ì—� backgroundì—�서 계ì†�ë�Œì•„가면서 ì�´ë²¤íЏ 체킹ì�´ë‚˜ ë�°ì�´íƒ€ 처리를 해주는것 같았다. ì•„ì§�ë�„ 정확히 모르겠다 - 2012/7/3

  • 그래서.. 샘플코드를 찾고 permissionì�„ 찾다가 manifest.json파ì�¼ì—�서 background를 설정하는것ì�„ 찾았다


  • "background": { "scripts": ["background.js"] },
      "permissions": [
        "tabs", "http://*/*"
      ],
    
    조금� 찾아보�



    Valid XHTML 1.0! Valid CSS! powered by MoniWiki
    last modified 2021-02-07 05:24:00
    Processing time 0.0085 sec