【发布时间】:2019-05-05 12:20:53
【问题描述】:
我在test.html.erb 的视图中有一个按钮,如下所示
<button id="Todo_full" onclick="showFullscreen(this);">Full size</button>
其javascript如下:
function showFullscreen(event)
{
var elem = document.getElementById('card_' + event.id);
if (elem.requestFullscreen) {
return elem.requestFullscreen();
}
else if (elem.mozRequestFullScreen)
{
/* Firefox */
return elem.mozRequestFullScreen();
}
}
当我将 javascript 代码保留在 test.html.erb 文件的下方时,它可以正常工作。
当我通过http://js2.coffee/将此代码转换为coffeescript并将代码保留在app/assets/javascript/test.coffee中时,如下所示:
showFullscreen = (event) ->
elem = document.getElementById('card_' + event.id)
if elem.requestFullscreen
return elem.requestFullscreen()
else if elem.mozRequestFullScreen
### Firefox ###
return elem.mozRequestFullScreen()
return
在控制台显示错误
Uncaught ReferenceError: showFullscreen is not defined
at HTMLButtonElement.onclick ((index):384)
即使我在咖啡脚本代码的顶部使用window.onload = ->,我也会在控制台中遇到同样的错误。
谢谢
【问题讨论】:
-
那些代码 sn-ps 并不完全等价。 JavaScript 定义了一个 global
showFullscreen函数,而 CoffeeScript 则在作用域包装器内创建了一个本地showFullscreen函数。也许你想说@showFullScreen = (event) -> ...或window.showFullScreen = (event) -> ...。或者更好的是,根本不使用onclick属性,创建本地函数并将它们绑定到元素。
标签: javascript ruby-on-rails ruby coffeescript