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 コード (上記のもの) を Web サイトに挿入するブックマークレットを持っています。上記の 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 を入れないようにするにはどうすればよいですか?