CoffeeScript = require './coffee-script'
CoffeeScript.require = require
compile = CoffeeScript.compileこのブラウザー互換のレイヤーは、ブラウザーで直接コードをコンパイルする際にも、スムーズに動作するように CoffeeScript のコア関数を拡張します。XHRおよびtext/coffeescriptスクリプトタグ、データURL経由のソースマップなどを介して、リモートのCoffeeスクリプトの読み込みをサポートします。
CoffeeScript = require './coffee-script'
CoffeeScript.require = require
compile = CoffeeScript.compile標準のJavaScriptのevalを使用してコードを評価します。
CoffeeScript.eval = (code, options = {}) ->
  options.bare ?= on
  eval compile code, optionsコードを実行しても、このスコープにはアクセスできません。
CoffeeScript.run = (code, options = {}) ->
  options.bare      = on
  options.shiftLine = on
  Function(compile code, options)()ブラウザー環境でない場合、パブリックAPIは完了です。
return unless window?可能な場合はソースマップを含めます。base64エンコーダー、JSONシリアライザー、Unicode文字をエスケープするためのツールがあれば大丈夫です。https://developer.mozilla.org/en-US/docs/DOM/window.btoaから移植されています。
if btoa? and JSON?
  compile = (code, options = {}) ->
    options.inlineMap = true
    CoffeeScript.compile code, options現在のドメインからXHRを介してリモートスクリプトを読み込みます。
CoffeeScript.load = (url, callback, options = {}, hold = false) ->
  options.sourceFiles = [url]
  xhr = if window.ActiveXObject
    new window.ActiveXObject('Microsoft.XMLHTTP')
  else
    new window.XMLHttpRequest()
  xhr.open 'GET', url, true
  xhr.overrideMimeType 'text/plain' if 'overrideMimeType' of xhr
  xhr.onreadystatechange = ->
    if xhr.readyState is 4
      if xhr.status in [0, 200]
        param = [xhr.responseText, options]
        CoffeeScript.run param... unless hold
      else
        throw new Error "Could not load #{url}"
      callback param if callback
  xhr.send nullページの読み込み時に、ブラウザーでCoffeeScriptをアクティブにし、text/coffeescriptのコンテンツタイプを持つすべてのスクリプトタグをコンパイルして評価します。
runScripts = ->
  scripts = window.document.getElementsByTagName 'script'
  coffeetypes = ['text/coffeescript', 'text/literate-coffeescript']
  coffees = (s for s in scripts when s.type in coffeetypes)
  index = 0
  execute = ->
    param = coffees[index]
    if param instanceof Array
      CoffeeScript.run param...
      index++
      execute()
  for script, i in coffees
    do (script, i) ->
      options = literate: script.type is coffeetypes[1]
      source = script.src or script.getAttribute('data-src')
      if source
        CoffeeScript.load source,
          (param) ->
            coffees[i] = param
            execute()
          options
          true
      else
        options.sourceFiles = ['embedded']
        coffees[i] = [script.innerHTML, options]
  execute()優れたブラウザーとIEの両方で、ウィンドウの読み込みをリッスンします。
if window.addEventListener
  window.addEventListener 'DOMContentLoaded', runScripts, no
else
  window.attachEvent 'onload', runScripts