2012-01-13 2 views
0

나는 온라인 애드온 빌더로 파이어 폭스 애드온을 만듭니다. 애드온 내부에서 웹 페이지의 기존 기능을 어떻게 사용할 수 있습니까? 이 사이트는 내 것이 아니므로 이벤트 리스너를 바인딩하여 내 애드온에서 이벤트를 보내지 못합니다.콘텐츠 스크립트에서 웹 페이지 js에 액세스

업데이트 : 이제이 코드를 가지고 있지만 그것은 작동하지 않습니다

main.js

var widgets = require("widget"); 
var tabs = require("tabs"); 
var data = require("self").data; 


var widget = widgets.Widget({ 
    id: "transfer", 
    label: "Transfer", 
    content: "Transfer", 
    width: 100, 
    onClick: function() { 
    tabs.activeTab.attach({ 
     // native implementation of window.confirm will be used 
     contentScriptFile: data.url("new.js") 
    }); 
    } 
}); 

new.js는 :

function foo() 
{ 
    call(); // function in webpage 

} 
unsafeWindow.foo(); 

답변

1

당신은에 콘텐츠 스크립트를 삽입 콘텐츠 스크립트에서 foo()을 호출하려면 콘텐트 스크립트에서 unsafeWindow.foo()을 호출하십시오 (예 : page-mod 패키지를 통해). 자세한 내용은 documentation을 참조하십시오. 웹 페이지 기능을 사용하여 예상대로 작동하지만 그렇지 않을 수도 있다는 경고를 읽으십시오. 특히, 함수가 무언가를 반환하고 그 결과를 처리하려는 경우 의도하지 않게 보안 구멍이 생길 수 있습니다.

+0

덕분에, 내 대답 –

+0

@ tasaras 업데이트 : ㅎ, 당신 unsafeWindow.call()'... –

+0

써야 겠어. 내가 그랬지 : TypeError unsafeWindow.call 함수에있는 함수가 아닙니다. 페이지가 함수 호출() {alert ("asd");} unsafeWindow.alert ("asd")로 잘 작동합니다. –

관련 문제