Я подозреваю, что проблема в том, что вы загружаете jQuery UI асинхронно. Линия
window.document.body.appendChild(s2)
начинает загрузку jQuery UI, но ваш код продолжается до того, как обязательно будет загружен jQuery UI. Это объясняет, почему вызов tabs()
в вашем коде завершился неудачно, но успешно, когда вы делаете это из консоли, после того, как скрипт успел загрузить.
Вы сможете исправить это, запустив остальную часть кода из обратного вызова
s2.onreadystatechange = ->
return unless @readyState is 'complete'
# the rest of the code goes here
Редактировать : И в этом отношении, вы действительно должны сделать то же самое с s1
, иначе вызов $ ->
может завершиться ошибкой. Тот факт, что он успешно выполняется, говорит о том, что либо в вашем браузере кэширована jQuery, либо на странице уже есть jQuery. Вам также следует использовать noConflict
, чтобы избежать перезаписи существующей версии jQuery страницы. Запуск jQuery Code Bookmarklet , с которым связан Acorn, выполняет все эти действия (и в более кросс-браузерной манере, чем код в этом ответе).