【问题标题】:Script loaded with HeadJS runs only on second click使用 HeadJS 加载的脚本仅在第二次单击时运行
【发布时间】:2014-04-22 14:35:08
【问题描述】:

使用 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);
}); 

【问题讨论】:

    标签: javascript aviary


    【解决方案1】:

    在调用launch 函数之前,您需要等待插件初始化。您可以使用onLoad 事件:

    var featherEditor = new Aviary.Feather({
                    apiKey: 12345,
                    apiVersion: 3,
                    onLoad: function() {
                         featherEditor.launch({
                            image: $id,
                            url: $src
                        });
                    }                                    
                }); 
    

    【讨论】:

    【解决方案2】:

    回答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)
            }
        })
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-02-08
      • 1970-01-01
      • 1970-01-01
      • 2016-06-18
      • 2022-11-19
      • 2021-01-05
      • 2021-03-14
      相关资源
      最近更新 更多