2012-10-15 3 views
0

위젯을 클릭 할 때 표시되는 패널과 함께 툴바 위젯을 추가하는 Firefox 확장 기능이 있습니다. 특정 상황에서 툴바 위젯을 클릭하면 패널이 표시되지 않아야합니다.툴바 위젯 onClick 핸들러에서 패널 열기 취소하기

나는과 같이 도구 모음 및 패널을 인스턴스화하고 있습니다 :

var popup = panel.Panel({ 
    width: 310, 
    height: 400, 
    contentURL: self.data.url('panel.html'), 
    contentScriptFile: self.data.url('panel.js'), 
    // NOTE: You can't use the contentStyleFile option here. 
}); 

var toolbarOptions = { 
    id: 'someid', 
    label: 'Some Label', 
    contentURL: self.data.url('icon-16.png'), 
    panel: popup 
}; 

// There doesn't seem to be a way to remove the toolbar in PB mode. 
var toolbar = widgets.Widget(toolbarOptions); 

어떻게 위젯 클릭 핸들러에서 패널 오프닝을 취소 할 수 있습니다? 내가 거기에 어떤 논리를 넣든 항상 열리는 것처럼 보인다.

toolbar.on('click', function() { 
    if (dontShowPanel()){ 
    // I want to somehow cancel the panel opening at this point. 
    } else { 
    panel.show(); 
    } 
}); 

가 나는 작동하지 않는 것 클릭 투수에서 return false;에 노력했다. 나는 또한 panel.hide()에 전화하려고 노력했다. 그것도 작동하지 않는 것 같습니다.

추가 기능 SDK의 버전 1.10을 사용하고 있습니다. 위젯을 만들 때

답변

1

귀하의 click 이벤트 핸들러는 패널이 나타나기 전에 호출됩니다. 즉,이 시점에서 패널을 변경할 수 있습니다. 그러나 확실하지 않은 것 : Widget 객체의 패널을 변경하면 즉각적인 영향을 미치지 않으므로 WidgetView 객체 (특정 브라우저 창의 위젯 인스턴스)에 대해 변경해야합니다. 해당 개체는 click 이벤트 처리기에 매개 변수로 전달됩니다. 따라서 툴바 옵션은 다음과 같을 수 있습니다 :

var toolbarOptions = { 
    id: 'someid', 
    label: 'Some Label', 
    contentURL: self.data.url('icon-16.png'), 
    onClick: function(view) { 
    if (dontShowPanel()){ 
     view.panel = null; 
    } else { 
     view.panel = popup; 
    } 
    } 
}; 
1

, 당신은 속성으로 패널 인스턴스를 추가해야합니다

var panel = require("panel").Panel({ 
    width: 250, 
    height: 250, 
    contentURL: data.url('panel.html') 
}); 

require("widget").Widget({ 
    id: 'id', 
    label: 'my-label', 
    contentURL: data.url('http://www.mozilla.org/favicon.ico'), 
    panel: panel 
}); 

업데이트 : 미안 해요 전체 질문을 이해하지 못했다. 내가 아는 한, 앵커링을 유지하는 방식으로 클릭 이벤트를 기반으로 패널을 표시하는 것을 조건부로 방지 할 수있는 방법이 없습니다.

+0

그래, 그게 내가하고있는 일이야. (나는 위젯 생성 코드를 질문에 추가했다.) 그러면 패널이 완벽하게 나타나는데 아무런 문제가 없습니다. 내가 원하는 것은 그와 같은 패널을 추가 할 수 있지만 그때 사용자가 상황에 따라 위젯을 클릭 할 때 조건부로 표시하지 않는 것입니다. –

관련 문제