JavaScript将代码添加到已设置的事件中

时间:2012-06-13 14:58:47

标签: javascript javascript-events

我尝试将新代码添加到已经设置的事件中,并且不知道如何在不重新编写代码的情况下执行此操作? 正如您所看到的,我有一个 onComplete 事件,在完成Flash文件后会抛出一个alert()。现在我还想打开一个jQuery对话框。我怎么能这样做?

问候和感谢,
-lony

<html><head><title>testAddEvent</title>
    <script type="text/javascript" src="filesOthersForTesting/jquery-1.x.x.min.js"></script>
    <script type="text/javascript" src="filesFromJWPlayer/jwplayer.js"></script>
    <script type="text/javascript">
        $(function(){
            jwplayer('playerDiv-1').setup({
                flashplayer: 'filesFromJWPlayer/player.swf',
                file: 'sampleContent/bla.flv',
                provider: 'video',
                height: 300,
                width: 300,
                stretching: 'uniform',
                events: {
                    onComplete: function() {
                        alert('Complete!');
                    }
                }
            });
        });
    </script>
<body>
    <div id="playerDiv-1"></div>
</body>

更新1:
这段代码就是一个例子。 alert()是一堆行的示例。一般的问题是,我可以在已初始化的事件(events.onComplete)中添加一些内容。 类似于:events.onComplete = events.onComplete + 'new code here';的参数。

@Pointy:是的jQuery 1.3.2已经过时了,切换到了x;)。

1 个答案:

答案 0 :(得分:0)

function decorateBefore(target, decorator) {
    var fn = function () {
        decorator.apply(this, arguments);
        return target.apply(this, arguments);
    };
    // fix inheritance if it's constructor 
    // (it's not needed in your case)
    fn.prototype = target.prototype;
    return fn;
}    

someObj.onComplete = decorateBefore(someObj.onComplete, function(){
  // my code here
  // this function will accept same arguments as original, it's return value will be ignored
})