Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

remove CoffeeScript anonymous function calls

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

I currently have a bookmarklet that inserts javascript code(the one above) into a website. I wrote the above coffeescript and it generates this:

(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);

I snipped the functions that uses buildIMG. That function creates an overlay over the site and displays all images in that overlay. buildIMG is called for each image to create the html.

The problem is that the onclick="popitup("http://somewhere.com/test" portion doesn't work. It is undefined.

A solution I did was to remove this which was generated by CoffeeScript:

(function() {

}).call(this);

It was fixed as soon as I removed that. How do I not have CoffeeScript put in those lines in my generated javascript?

like image 583
Teej Avatar asked Nov 28 '22 09:11

Teej


1 Answers

CoffeeScript allows to compile JavaScript without this safety wrapper by --bare option.

like image 101
zbynour Avatar answered Dec 07 '22 00:12

zbynour