2014-12-07 1 views
0

위젯 아이콘을 클릭하면 contenturl로 Panel을 새로 고칠 수 있습니까? 내 코드는 여기에 간단 그건 :add-on sdk에서 contenturl 새로 고침

var data = require("sdk/self").data; 

exports.main = function() { 
    var panel = require("sdk/panel").Panel({ 
     width: 400, 
     height: 560, 
     contentURL: "http://sample.com/index.html",  
    }); 

    panel.on("show", function() { 
     panel.port.emit("show"); 
    }); 

    require("sdk/widget").Widget({ 
     id: "Sample", 
     label: "Sample", 
     contentURL: data.url("icon128.png"), 
     panel:panel 
    }); 
}; 

답변

1

변경 위젯 패널의 contentURL은과 같이 클릭

:

require("sdk/widget").Widget({ 
    id: "Sample", 
    label: "Sample", 
    contentURL: data.url("icon128.png"), 
    panel:panel, 
    onClick: function() { 
     panel.contentURL = contentURL; 
    } 
}); 

는 아래의 마음

Widget docs하십시오

위젯 API는 Firefox 29 이상에서 사용되지 않습니다. 대체를 위해 ui 모듈을 참조하십시오. 특히 간단한 버튼의 경우 action button 또는 toggle button API를 사용해보세요.

Panel docs :

: 당신은 패널의 쇼() 메소드 또는 생성자에 위치 옵션으로 버튼 자체를 전달하여 토글 버튼에 패널을 부착 할 수

var { ToggleButton } = require('sdk/ui/button/toggle'); 
var panels = require("sdk/panel"); 
var self = require("sdk/self"); 

var button = ToggleButton({ 
    id: "my-button", 
    label: "my button", 
    icon: { 
    "16": "./icon-16.png", 
    "32": "./icon-32.png", 
    "64": "./icon-64.png" 
    }, 
    onChange: handleChange 
}); 

var panel = panels.Panel({ 
    contentURL: self.data.url("panel.html"), 
    onHide: handleHide 
}); 

function handleChange(state) { 
    if (state.checked) { 
    panel.show({ 
     position: button 
    }); 
    } 
} 

function handleHide() { 
    button.state('window', {checked: false}); 
} 
관련 문제