我正在尝试在我的应用中使用tripleflap.js。我的观点是调用函数:
<script type='text/javascript' charset='utf-8'>
TwitterBird();
</script>
所以,在application.js:
function TwitterBird() {
var twitterAccount = 'ulmicru';
var showTweet = false;
var birdSprite='http://127.0.0.1/birdsprite.png';
tripleflapInit();
}
然后我试图运行它,Javascript调试器说我:
Uncaught ReferenceError: birdSprite is not defined
在/ public / assets /中预编译的application.js我正在看这个:
function TwitterBird()
{var e="ulmicru",t=!1,n="http://127.0.0.1/birdsprite.png";tripleflapInit()}
似乎Rails预编译器已重命名变量,而tripleflap.js无法找到它们。
是否可以禁用资产中的变量重命名?
答案 0 :(得分:1)
尝试将变量定义移到函数外部,或者只是从它们前面移除var
,如下所示:
function TwitterBird() {
twitterAccount = 'ulmicru';
showTweet = false;
birdSprite='http://127.0.0.1/birdsprite.png';
tripleflapInit();
}
我用Google搜索tripleflapInit
脚本并查看了它。基本上它直接在窗口上定义了一堆配置变量,并希望你覆盖它们;总而言之,这是一个非常糟糕的剧本,但这不是重点。
因为你在birdSprite
的函数中定义了var
,所以你实际上是在为该函数定义一个新的变量。即使它没有被缩小器重命名,窗口定义的tripleflapInit
仍然不会使用它,而是查看窗口上定义的变量。
我不确定为什么你会收到birdSprite
未定义的错误,但编译器可能会混淆并将其删除,认为它未被使用。