2009-05-09 2 views
0

태그가 <input type="file" ... >이고 파일이 선택되면로드 된 페이지에 버튼을 넣어야하는 Firefox 확장 기능을 개발할 것입니다.Firefox 확장 기능에서 웹 페이지에 요소를 추가하는 방법

마찬가지로 스카이프 툴바도 비슷한 기능을한다고 생각합니다. 웹 사이트에 전화 번호가 있으면 Skype 확장 프로그램이이를 자동으로 Skype 연락처를 호출하기 위해 클릭 할 수있는 버튼으로 변환합니다. ...

은 내가 GNU/리눅스 시스템에있어, 안타깝게도 스카 이프 확장 파이어 폭스/스카 이프의 리눅스 버전에서 작동하지 않습니다, 그래서 난 아무것도 리버스 엔지니어링을 시도 할 수

파이어 폭스 확장 파일에는 overlay.js 파일이 들어 있습니다.이 파일에는 확장 프로그램의 기본 로직이 들어 있습니다. 여기에 단순히이 코드 <input type="file" ... > 노드를 찾을 수 있습니다 : 파일이 선택되었을 때

onFileChosen: function(aEvent) { 
var input = aEvent.explicitOriginalTarget; 
if(input.type=="file"){ 
    alert(input.value); } 
} 

window.addEventListener("change", function(e) {xpitest.onFileChosen(e)},false); 

그래서, 경고 창이 나타나면 파일 이름을 보여줍니다.

하지만 파일을 선택하면 어떻게 페이지에 단추를 넣을 수 있습니까?

나는 다양한 document.parentNode 및 similars로 시도해 왔지만 아무 것도 작동하지 않는 것 같습니다.

로드 된 페이지에 물건을 넣을 수 없습니까?

감사

크롬 컨텍스트에서
+0

Crossrider로 아주 쉽고 빠르게 할 수 있습니다. 내장 된 jQuery 지원을 사용하고 $ jquery ("input [type = file]")에 대한 onchange 이벤트를 바인딩하기 만하면됩니다. Crossrider는 크로스 브라우저 확장을 위해 crx, xpi 및 exe 확장 파일을 생성합니다. – shdev

답변

4

, 당신은 top.window.content.document를 사용하여 현재 콘텐츠 문서 (파일 츄와 예를 들어, 페이지)를 얻을 수 있습니다. 이 시점에서 JS는 페이지에서 실행되는 것과 같습니다. 그래도 도움이되지 않으면 가능한 한 많은 정보를 코드 에 게시하십시오. Working with windows in chrome code을 참조하십시오.

그리고 분명히 물건을 페이지에 삽입 할 수 있습니다.

+0

mozillazine에 동일한 질문을 게시했습니다. http://forums.mozillazine.org/viewtopic.php?f=19&topic1239905 전체 오버레이를 포함하고 있습니다 .js – Giancarlo

+0

코드를 게시 해 주셔서 감사합니다. 당신이 내 조언 (re : window.content.document)을 따랐던 것처럼 보이지는 않습니다. 또한로드 할 때 한 번만 페이지를 스캔하는 것이 더 효율적일 수 있습니다 (가능한 경우). 파일 상자에만 이벤트 리스너를 추가하십시오. 그러면 전체 창에 onchange가 생기는 것을 피할 수 있습니다 (이는 상당히 느려질 수 있습니다). –

+0

페이지를 한 번만 스캔하면 효율성이 가장 우수하다는 것을 알고 있습니다. 나중에 구현할 것입니다. top.window.content.document와 aEvent.explicitOriginalTarget을 모두 사용하는 결과는'object HTMLInputElement'이므로 문제가되지 않을 것이라고 생각합니다 ... 문제는 내가 옆에 버튼을 두어야하는 방법입니다 "파일 선택기", 그 밖의 것은 없습니다. 감사합니다 :) – Giancarlo