2008-09-13 3 views
13

Safari Extension을 작성하는 가장 좋은 방법은 무엇입니까? 필자는 Firefox 용 XUL 확장을 몇 개 작성했습니다. 이제는 Safari 용 버전을 작성하고 싶습니다. 입력 관리자 나 서비스 메뉴에서는 불가능하기 때문에 브라우저 UI에 버튼이나 양식을 추가 할 수있는 방법이 있습니까?Safari 4 Extension을 작성하는 가장 좋은 방법

답변

13

Safari 플러그인 개발은 간단합니다. 인터페이스는 Objective-C로 작성되었으며 대부분 WebKit에 포함되어 있지 않으므로 (소스를 볼 수는 없지만) 실행중인 응용 프로그램의 객체 계층을 검사하고 패치하는 메커니즘이 있습니다. 그것은 코코아와 Objective-C에 대한 이해를 필요로하지만 더 낮지는 않습니다.

다음은 내 북마크에있는 http://livingcode.org/2006/tab-dumping-in-safari의 상위 수준 개요입니다. Python을 사용하여 사파리 플러그인을 만드는 작업이 진행됩니다 (오래된 코드 일 수 있습니다). 파이썬 대신 Objective-C 바인딩이있는 모든 것을 사용할 수 있습니다.

그것은 두 가지 주요 부분이 있습니다

당신은 실행 사파리에 코드를 연결해야
  • . 이는 일반적으로 SIMBL http://www.culater.net/software/SIMBL/SIMBL.php으로 수행됩니다.

  • 내부에 있으면 패치 할 대상을 파악해야합니다. 가장 중요한 도구 인 클래스 덤프 http://www.codethecode.com/projects/class-dump/에 링크 된 Cocoa 응용 프로그램을 역전하는 방법에 대한 자습서가 있습니다 (wiki의 링크가 깨졌습니다). 클래스 덤프는 사파리 클래스의 완전한 계층 구조를 제공합니다.이 클래스에서는 이름으로, 특히 패치해야 할 대상을 추측 할 수 있습니다. 이는 매우 시행 착오입니다.

위의 링크를 읽으면 프로젝트의 범위를 알 수 있습니다.

+0

입력 관리자 ≠ 사파리 플러그인. Safari에는 플러그인 아키텍처가 있지만 Firefox와 비교하여 개발자가 기대하는 것은 아닙니다. 이 대답은 입력 관리자 접근법에 대한 중대한 조언을 제공합니다. 내 대답은 "진정한"플러그인에 대한 정보가 더 많습니다.이 방법은이 경우 사용자의 특정 요구 사항을 충족시키지 못할 수도 있습니다. –

+0

이제 simbl과 함께 safari 플러그인을 만들고 싶습니다. 그리고 Armchair Guide To Cocoa Reverse Engineering을 읽었습니다. 그러나 메소드 구현시 - (void) load; PIC 또는 Flash URL과 마찬가지로 Safari DOM 객체를 가져 오는 데 플러그인을 사용하는 방법은 무엇입니까? 고마워요! – jin

4

입력 관리자 또는 서비스 메뉴에서는 불가능하기 때문에 브라우저 UI에 버튼이나 양식을 추가 할 수있는 방법이 있습니까?

사실 InputManager를 사용하면 이됩니다. SIMBL, 사파리 확장을위한 일반적인 기술은 단순히 InputManagers 주위의 래퍼입니다 - 그것은 S 마트 내가 Mnput anager B undle L oader을 의미합니다. Safari의 기존 클래스를 확장하여 메뉴 막대, 툴바, 대화 상자에 항목을 추가 할 수 있습니다.

즉, 사파리의 확장 기능을 작성하는 것은 결코 쉬운 일이 아니며 옹 총재는 말했지만 완전히 지원되지 않는다고 전했다. Inquisitor (최근 Yahoo!에서 인수)와 Google Gears와 같이 비교적 인기있는 Inquisitor가 있지만 대부분 공식적으로 지원되고 널리 사용되는 Firefox 확장 기능과는 다릅니다.

특별 limitations of InputManagers on Leopard도 고려해야합니다.

0

메모 - Apple은 InputManagers가 Leopard만큼 심각하게 제한되어 있으며 Apple Leopard Release Notes 당 64 비트 응용 프로그램에서는 실행되지 않는다고 명시했습니다. 이것은 대부분의 응용 프로그램이 Snow Leopard (아마도 Safari 포함)에서 64 비트가 될 것이므로 특히 흥미 롭습니다. Apple은 확실히 InputManager를 재정의 기능을 확장하는 벡터로 지우려고합니다. 사파리는 확장 메커니즘이 절실히 필요합니다.

5

사실 사파리가 실제로 플러그인을 지원한다는 사실을 언급 한 사람은 아무도 없습니다. 관리자가 입력 한 해킹이 가장 확실한 것은 아닙니다.

"웹킷 플러그인 프로그래밍 주제" http://developer.apple.com/documentation/InternetWeb/Conceptual/WebKit_PluginProgTopic/

이것은 PDF와 플래시 콘텐츠에 대한 지원과 같은 것들을 구현 방법이다. 예제를 보려면 /Library/Internet Plug-ins/ 디렉토리를 들여다보십시오.

물론 고유 한 제한이 있으며 사용자가 UI 수정까지 바라는 것을 달성하지 못할 수도 있습니다. Safari 플러그인은 Input Manager가 해킹 할 수있는 모든 일을 할 수는 없지만, WebKit은 어디서나 사용할 수 있습니다. 참고 : Safari는 기본적으로 Snow Leopard에서 64 비트이므로 입력 관리자가 작동하지 않습니다. 내가 누락 된 Safari AdBlock 이미 ... :-(bonafide 플러그인으로 다시 작성되는 것을보고 싶습니다.

10

최근 변경된 사항 Apple은 Safari 5의 일부로 사용할 수있는 확장 API를 제공합니다. 자세한 내용은 Apple's sitejoining the Safari Developer Program.

확장 프로그램에는 디지털 서명이 필요하지만 Apple에서 서명 인증서를 무료로 얻을 수 있습니다. 이것은 확장 기능을 Safari로 가져올 수있는 합법적 인 방법입니다. Apple이 Safari를 업데이트 할 때마다 중단됩니다.

+0

+1 이것을 업데이트하기 위해, 나는 그들이 승인을 필요로하는 것을 포함시킬 것이다. .... 이것은 누군가를 놀라게 할 것이 아니라 여전히 가치있는 노트이다. –

+0

완료하고 완료했습니다! 감사. –

+0

그들은 실제로 승인을 필요로하지 않으며, 애플의 무료 인증서로 디지털 서명을하면됩니다. –

0

사파리 확장 승인 할 필요가없는 5

보기 링크에서 버튼, 툴바, 컨텍스트 메뉴, 자바 스크립트와 HTML을 사용하여 주사를 사용자 정의 할 수 있도록 파이어 폭스 extesion 프레임 워크와 비슷 사과. 개발자 인증서 (무료) 만 있으면 만들 수 있지만 Apple은 확장 갤러리를 만들고 있지만 배포 할 필요는 없습니다. 보시다시피 이미 오늘 시도 할 수있는 확장 프로그램이 많이 있습니다. 인증서는 위조되지 않았 음을 보증합니다.

http://safariextensions.tumblr.com/

0

당신은/개방 후가 .xar 볼 수 평화주의로 추출 할 .safariextz을 변경 폴더, 그 수행 방법을 볼을 다운로드하거나 사파리 확장에서 그걸 얻기 위해 기존의 확장을보고 싶다면 코드 및 확장 기능 빌더 응용 프로그램에 추가하려는 경우.