我有一个来自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")
Run Code Online (Sandbox Code Playgroud)
我的尝试(jQuery):
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);
});
Run Code Online (Sandbox Code Playgroud)
只需将正在调用的函数包装在常规函数中,然后在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);
});
Run Code Online (Sandbox Code Playgroud)
你可以分开选择并编写自己的函数,是的,但是这更容易理解和维护:如果Aweber函数发生变化,你只需更换createAweberScript()函数内的所有内容来更新它.
注意:我得到了404 http://forms.aweber.com/form/id.js; 我假设这不是你想要使用的URL.如果是这样,您可能想要检查它.