programing

Chrome 확장 매니페스트 '일치'

linuxpc 2023. 3. 7. 21:10
반응형

Chrome 확장 매니페스트 '일치'

간단한 Chrome Extension을 사용해 보려고 하는데, 이 기능을 위해 값을 제공하는 데 문제가 있습니다.matches내 안에 배열content_scripts.

{
  "name": "My Extension",
  "version": "1.0",
  "description": "My Extension Experiment",
  "browser_action": {
    "default_icon": "icon.png",
    "default_title": "Ext",
    "default_popup": "popup.html"
  },
  "content_scripts": {
    "matches": ["http://*"],
    "js": ["scripts.js"]
  }
}

이 확장을 Chrome에 로드하려고 하면 다음 메시지가 나타납니다.

'C:'에서 확장을 로드할 수 없습니다.\사용자\foo\데스크탑\내선번호\bar'
'content_scripts' 값이 잘못되었습니다.

하지만 제 가치의 "무효"가 무엇인지 알 수 없습니다.모든 URL을 대조하여 확장자가 (내 javascript를 통해) DOM을 조작할 수 있도록 하려고 합니다.scripts.js)을 클릭합니다.내가 뭘 놓치고 있는 거야, 잘못 가고 있는 거야, 뭐야?

갱신하다

이 질문을 투고하고 나서 구글의 예가 제 예와 약간 다르다는 것을 깨달았습니다.그래서 구문을 반영하기 위해 코드를 조금 수정했습니다.

"content_scripts": [{
  "matches": ["http://*"],
  "js": ["scripts.js"]
}]

그러나 내선번호를 로드하려고 하면 여전히 다음 오류가 발생합니다.

'C:'에서 확장을 로드할 수 없습니다.\사용자\foo\데스크탑\내선번호\bar'
content_scripts[0].matches[0]' 값이 잘못되었습니다.

그 가치를 고려해야 합니다.content_scripts각 괄호 안의 필드:

"content_scripts": [ {
  "matches": ["http://*"],
  "js": ["scripts.js"]
} ]

(자세한 내용은 Chrome Docs를 참조하십시오.)

덧붙여서, 사용법http://*/*모든 URL(문서 참조), 추가https://*/*그것들과도 일치해야 한다면요.

편집:

편집 후 발생하는 오류는 일치 패턴이 잘못되었기 때문입니다.

모든 URL을 일치시키고 싶다면 Google은 이 목적을 위해 특별한 패턴을 가지고 있습니다.<all_urls>

사용 예:

"matches": ["<all_urls>"],

상세한 것에 대하여는, 다음의 페이지를 참조해 주세요.https://developer.chrome.com/extensions/match_patterns

모든 일치 패턴은 [Scheme]://[host][path] 구조여야 합니다.

  1. scheme는 '*' | 'scheme' | 'scheme' | 'file' | 'scheme' 입니다.
  2. 호스트는 " | " 입니다. (/' 및 '*'를 제외한 모든 문자)+
  3. 경로는 '/'(임의 문자)입니다.

HTTP/S 및 FILE URL을 일치시키려면 다음을 사용합니다.

 "matches": [
    "*://*/*",
    "file://*/*"
  ],

참고 자료: https://developer.chrome.com/apps/match_patterns

참고로 로컬 파일에 대한 액세스를 허용하려면 다음 권한을 추가합니다.

"permissions": [
   "file://*/*"
]

또는 확장자 설정 페이지에서 파일 액세스를 승인합니다.

다음과 같은 오류가 발생하는 대부분의 경우:

'content_scripts[0].matches' is missing or invalid.

또는

'content_scripts[0].matches[0]': Empty path.

필요한 특정 URL을 사용하여 matches 필드를 입력 또는 작성합니다.모든 URL을 사용하려면<all_urls>하다

"content_scripts": [
        {
            "matches": ["<all_urls>"],
            "js": [ "jquery.js" ]
        }
    ]

js 배열에 나열된 파일에는 앱에 대한 경로가 있습니다.즉, "manifest.json"의 위치가 루트 디렉토리입니다.

주의: jquery.js는 프로젝트 디렉토리에 있는 파일입니다.필요한 스크립트파일로 치환해 주세요.

작업 후 여러 번 시도하면 모든 URL과 일치하며 여기에 http 및 https.enter 코드도 지원합니다.

 "manifest_version": 2,
 "content_scripts": [
    {
     "matches": [
        "*://*/*",
      ]
   }

CDN에서 Jquery를 사용하는 경우 Jquery를 다운로드하여 작업 폴더에 포함시킨 다음 가져오기를 시도합니다.

덧붙이는 것을 잊었군요.

"syslog_version" : 2

필수 사항이죠.

언급URL : https://stackoverflow.com/questions/2769525/chrome-extension-manifest-matches

반응형