buildIMG = (src, resize) ->
html = '<div class="left"><div class="foods_image">'
html += '<a onclick="popitup("http://somewhere.com/test" href="javascript:void(0)">'
html += ' <img src="'+src+'" '+resize+' />'
html += '</a>'
html += '</div></div>'
html
popitup = (url) ->
newwindow=window.open(url,'name','height=640,width=640')
newwindow.focus() if window.focus
false
我目前有一个书签,可以将javascript代码(上面的代码)插入到网站中。我写了上面的coffeescript,它产生了这个:
(function() {
var buildIMG, popitup;
buildIMG = function(src, resize) {
var html, nbsp;
html = '<div class="left"><div class="foods_image">';
html += '<a onclick="popitup(\'http://somewhere.com/test\');" href="javascript:void(0)">';
html += ' <img src="' + src + '" ' + resize + ' />';
html += '</a>';
html += '</div></div>';
return html;
};
popitup = function(url) {
var newwindow;
newwindow = window.open(url, 'name', 'height=640,width=640');
return newwindow.focus()(window.focus ? false : void 0);
};
}).call(this);
我剪断了使用buildIMG的函数。该功能在网站上创建叠加层并显示该叠加层中的所有图像。为每个图像调用buildIMG来创建html。
问题是onclick="popitup("http://somewhere.com/test"
部分不起作用。这是未定义的。
我所做的解决方案是删除由CoffeeScript生成的内容:
(function() {
}).call(this);
我删除它后立即修复。我如何在生成的javascript中将CoffeeScript放入这些行?
答案 0 :(得分:19)
CoffeeScript允许通过--bare
选项编译没有此安全包装的JavaScript。
答案 1 :(得分:5)
虽然为了清晰起见,但在本文档中已被删除 CoffeeScript输出包含在匿名函数中:(function(){ ......})();这种安全包装与自动发电相结合 var关键字,使污染非常困难 全局命名空间。
来自CoffeScript网站。 如果要创建全局方法或变量,则需要
root = this
localProperty = "111"
root.property = localProperty
然后,您将获得全球范围内的房产。