Javascript 重写立即调用的函数

Javascript 重写立即调用的函数,javascript,jquery,Javascript,Jquery,我有一个来自AWeber的脚本,用于弹出表单,我想对它进行一点自定义 当页面加载时,它当前打开弹出窗口。我希望它作为按钮的单击事件运行 问题是:它使用一个立即调用的函数。因为我是个新手,还不熟悉这种模式,所以我想不出来。我读过,但我还没有完全理解 因此,我尝试将脚本重写为一个简单的模式,但它不起作用 那么,你能帮我弄清楚我的新功能有什么问题吗 和/或为我简化/解释其他功能 第一个函数: (function(d, s, id) { var js, fjs = d.getElementsBy

我有一个来自AWeber的脚本,用于弹出表单,我想对它进行一点自定义

当页面加载时,它当前打开弹出窗口。我希望它作为按钮的单击事件运行

问题是:它使用一个立即调用的函数。因为我是个新手,还不熟悉这种模式,所以我想不出来。我读过,但我还没有完全理解

因此,我尝试将脚本重写为一个简单的模式,但它不起作用

那么,你能帮我弄清楚我的新功能有什么问题吗

和/或为我简化/解释其他功能

第一个函数:

(function(d, s, id) {
    var js, fjs = d.getElementsByTagName(s)[0];
    if (d.getElementById(id)) return;
    js = d.createElement(s); js.id = id;
    js.src = "//forms.aweber.com/form/id.js";
    fjs.parentNode.insertBefore(js, fjs);
}(document, "script", "aweber-wjs-formid")
function createAweberScript() {
    var script=document.createElement('script');
    script.type='text/javascript';
    script.id='aweber-wjs-formid';
    script.src='//forms.aweber.com/form/id.js';
    jQuery('body').append(script);
}

jQuery(document).ready(function () {
    jQuery( 'a.button' ).click(createAweberScript);
});
我的尝试(jQuery):

(function(d, s, id) {
    var js, fjs = d.getElementsByTagName(s)[0];
    if (d.getElementById(id)) return;
    js = d.createElement(s); js.id = id;
    js.src = "//forms.aweber.com/form/id.js";
    fjs.parentNode.insertBefore(js, fjs);
}(document, "script", "aweber-wjs-formid")
function createAweberScript() {
    var script=document.createElement('script');
    script.type='text/javascript';
    script.id='aweber-wjs-formid';
    script.src='//forms.aweber.com/form/id.js';
    jQuery('body').append(script);
}

jQuery(document).ready(function () {
    jQuery( 'a.button' ).click(createAweberScript);
});

只需将立即调用的函数包装在常规函数中,并在
click
处理程序中调用该函数:

function createAweberScript() {
    // start Aweber script
    (function(d, s, id) {
        var js, fjs = d.getElementsByTagName(s)[0];
        if (d.getElementById(id)) return;
        js = d.createElement(s); js.id = id;
        js.src = "//forms.aweber.com/form/id.js";
        fjs.parentNode.insertBefore(js, fjs);
    }(document, "script", "aweber-wjs-formid"));
    // end Aweber script
}

jQuery(document).ready(function () {
    jQuery('a.button').click(createAweberScript);
});
您可以将其分离并编写自己的函数,是的,但这更易于理解和维护:如果Aweber函数发生更改,您只需替换
createAweberScript()
函数中的所有内容即可对其进行更新


注:我在
http://forms.aweber.com/form/id.js
;我想这并不是你想要使用的网址。如果是这样,您可能需要检查它。

只需将立即调用的函数包装为常规函数,然后在
单击
处理程序中调用该函数:

function createAweberScript() {
    // start Aweber script
    (function(d, s, id) {
        var js, fjs = d.getElementsByTagName(s)[0];
        if (d.getElementById(id)) return;
        js = d.createElement(s); js.id = id;
        js.src = "//forms.aweber.com/form/id.js";
        fjs.parentNode.insertBefore(js, fjs);
    }(document, "script", "aweber-wjs-formid"));
    // end Aweber script
}

jQuery(document).ready(function () {
    jQuery('a.button').click(createAweberScript);
});
您可以将其分离并编写自己的函数,是的,但这更易于理解和维护:如果Aweber函数发生更改,您只需替换
createAweberScript()
函数中的所有内容即可对其进行更新


注:我在
http://forms.aweber.com/form/id.js
;我想这并不是你想要使用的网址。如果是这样,您可能需要检查它。

为什么它不工作?“它不起作用”还不够好。如果你把它放在同一个地方,原版能起作用吗?@KevinB,我不知道为什么它不起作用D我的意思是“它不工作”:当我点击按钮时,我的代码上的按钮是
a.button
,弹出表单不会出现!这够清楚吗?抱歉,请告诉我如何才能清楚地说明…是否添加了脚本标记?脚本加载成功吗?是否发生任何错误?按照单击时发生的过程,找出停止的位置。@Quentin,是的,当我将它放在完全相同的位置时,它确实起作用。为什么它不起作用?“它不起作用”还不够好。如果你把它放在同一个地方,原版能起作用吗?@KevinB,我不知道为什么它不起作用D我的意思是“它不工作”:当我点击按钮时,我的代码上的按钮是
a.button
,弹出表单不会出现!这够清楚吗?抱歉,请告诉我如何才能清楚地说明…是否添加了脚本标记?脚本加载成功吗?是否发生任何错误?按照单击时发生的过程,找出它的停止位置。@Quentin,是的,当我将它放在完全相同的位置时,它确实起作用。是的,没错,我刚刚将URL更改为更便于移植的/wiki样式example@SomeOne伟大的很高兴它有帮助!是的,没错,我刚刚将URL更改为更具可移植性/维基风格example@SomeOne伟大的很高兴它有帮助!