수색…


비고

48 이전의 Firefox 버전을 사용하는 경우 manifest.json 응용 프로그램이라는 추가 키가 필요합니다.

"applications": {
  "gecko": {
    "id": "[email protected]",
    "strict_min_version": "42.0",
    "strict_max_version": "50.*",
    "update_url": "https://example.com/updates.json"
  }
}

응용 프로그램


노트 :

확장 서명 :

Firefox 48이 출시되면 환경 설정을 사용하여 릴리스 및 베타 채널 빌드에서 확장 서명을 더 이상 비활성화 할 수 없습니다. 확장명 서명이 발표되었을 때 설명 된대로이 기본 설정을 지원하는 특수 빌드를 게시하여 개발자가 베타 및 릴리스 빌드가 생성 된 코드를 계속 테스트 할 수 있도록합니다.

WebExtensions 상태 :

WebExtensions는 현재 알파 상태로 실험 중입니다. Firefox 46에서 다른 부가 기능과 마찬가지로 Firefox 사용자에게 WebExtensions를 게시 할 수 있습니다. 우리는 Firefox 48에서 최초의 안정적인 릴리즈를 목표로하고 있습니다.

UPD : Firefox 48이 02.08.2016을 릴리스했습니다.


모래밭:

API 지원 상태 - API 및 해당 상태 목록입니다.

Chrome 비 호환성

WebExtensions - JavaScript API, manifest.json의 키, 자습서 등

WebExtensions를 통한 이식

/에서 Firefox 확장 기능을 이식하는 것에 대해 이야기하기 전에 WebExtensions 가 무엇인지 알아야합니다.

WebExtensions - Firefox 확장을 생성하기위한 API를 나타내는 플랫폼입니다.

Chromium 과 동일한 확장 아키텍처를 사용하기 때문에이 API는 ChromeOpera (Chromium 기반 Opera)의 API와 여러면에서 호환됩니다. 대부분의 경우 이러한 브라우저 용으로 개발 된 확장 프로그램은 Firefox 에서 약간의 변경없이 또는 전혀 변경없이 작동합니다.

MDN은 새로운 확장에 WebExtension 을 사용하도록 권장 합니다.

앞으로 WebExtensions가 Firefox 부가 기능을 개발하는 데 권장되는 방법이 될 것이며 다른 시스템은 더 이상 사용되지 않을 것입니다.

앞에서 언급했듯이 Firefox에 확장 기능을 포팅하려면 확장 기능이 어떻게 작성되었는지 알고 있어야합니다.

Firefox 확장 기능WebExtension , Add-on SDK 또는 XUL 기반으로 할 수 있습니다.


WebExtension을 기반으로하는 호환 가능한 확장

WebExtension 사용할 때 일부 기능은 완전히 또는 부분적으로 지원되므로 비 호환성 목록을 조사해야합니다. 즉, manifest.json 확인해야합니다.

또한 동일한 네임 스페이스 를 사용할 수 있습니다.

현재 모든 chrome. * 네임 스페이스를 통해 모든 API에 액세스 할 수 있습니다. 우리 자신의 API를 추가하기 시작하면 브라우저. * 네임 스페이스에 API를 추가 할 것으로 예상됩니다. 개발자는 기능 감지 기능을 사용하여 브라우저에서 API를 사용할 수 있는지 확인할 수 있습니다. *.

Firefox 및 Google 크롬에서 작동 할 수있는 간단한 확장 프로그램

manifest.json :

{
  "manifest_version": 2,
  
  "name": "StackMirror",
  
  "version": "1.0",
  
  "description": "Mirror reflection of StackOverflow sites",
  
  "icons": {
    "48": "icon/myIcon-48.png"
  },
  
  "page_action": {
    "default_icon": "icon/myIcon-48.png"
  },
  
  "background": {
    "scripts"   : ["js/background/script.js"],
    "persistent": false
  },
  
  "permissions": ["tabs", "*://*.stackoverflow.com/*"]
}

background 스크립트 :

function startScript(tabId, changeInfo, tab) {

    if (tab.url.indexOf("stackoverflow.com") > -1) {

        chrome.tabs.executeScript(tabId, 
            
            {code: 'document.body.style.transform = "scaleX(-1)";'}, function () {

            if (!chrome.runtime.lastError) {

                chrome.pageAction.show(tabId);
            }
        });
    }
}

chrome.tabs.onUpdated.addListener(startScript);

표준 zip 파일로 프로젝트를 .xpi 하지만 확장자는 .xpi 입니다.

프로젝트 꾸미기

그런 다음 Firefox 에서 확장 프로그램을로드해야합니다.

메뉴 about:addons 부가 기능을 통해 액세스 할 수있는 about:addons 페이지를 엽니 다.

모든 부가 기능 버튼을 클릭하십시오.

확장 프로그램 설치

확장 프로그램이로드되면 about:addons 가 다음과 같이 표시됩니다.

설치 결과

Chrome에서 확장 프로그램을로드하는 방법 은 다른 주제 인 - Chrome 확장 프로그램 시작하기를 참조하세요 .

확장 작업의 결과는 두 브라우저 ( Firefox / Chrome )에서 동일합니다.

일의 결과


현재 추가 기능이 Add-on SDK 또는 XUL을 기반으로하는 경우

확장 기능을 포팅 할 때 Add-on SDK 기반으로하는 경우 Add-on SDK => WebExtensions 의 비교 표를 살펴 봐야합니다. 이러한 기술은 기능이 비슷하지만 구현이 다르기 때문입니다. 표의 각 섹션은 WebExtensionWebExtension Add-on SDK 에 해당하는 기능을 설명합니다.

애드온 SDK와의 비교

비슷한 접근법과 XUL 확장.

XUL / XPCOM 확장 기능과의 비교



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow