使用HeadJS加载的脚本仅在第二次单击时运行。如何在第一次点击时获得Aviary发射器?
http://jsfiddle.net/ynts/6hgEb/
function aviary(id, src) {
var $id = id;
var $src = src;
head.load(
"http://feather.aviary.com/js/feather.js",
function() {
var featherEditor = new Aviary.Feather({
apiKey: 12345,
apiVersion: 3
// ... ///
});
featherEditor.launch({
image: $id,
url: $src
});
}
);
}
$(document).on('click', 'img', function(){
var $img = $(this).attr('src');
aviary('edit-pic', $img);
});
答案 0 :(得分:5)
在调用launch
函数之前,您需要等待插件初始化。您可以使用onLoad
事件:
var featherEditor = new Aviary.Feather({
apiKey: 12345,
apiVersion: 3,
onLoad: function() {
featherEditor.launch({
image: $id,
url: $src
});
}
});
答案 1 :(得分:0)
回答mikebridge,因为它没有第二次打开的情况:
一些黑暗的原因会阻止羽毛被多次实例化。 使用window.globalAviaryFeather来保存实例。
function launch(url) {
window.globalAviaryFeather.launch({
image: "imgId",
url: url
})
}
var url = "..."
if (window.globalAviaryFeather) {
launch(url)
} else {
window.globalAviaryFeather = new Aviary.Feather({
...
onLoad: function() {
self.launch(url)
}
})
}