禁用Rails中的Javascript变量重命名
我正在尝试在我的应用程序中使用tripleflap.js。我的观点是调用函数:禁用Rails中的Javascript变量重命名,javascript,ruby-on-rails,assets,Javascript,Ruby On Rails,Assets,我正在尝试在我的应用程序中使用tripleflap.js。我的观点是调用函数: <script type='text/javascript' charset='utf-8'> TwitterBird(); </script> 然后我尝试运行它,Javascript调试器告诉我: Uncaught ReferenceError: birdSprite is not defined 在/public/assets/precompiled application.
<script type='text/javascript' charset='utf-8'>
TwitterBird();
</script>
然后我尝试运行它,Javascript调试器告诉我:
Uncaught ReferenceError: birdSprite is not defined
在/public/assets/precompiled application.js中,我看到了以下内容:
function TwitterBird()
{var e="ulmicru",t=!1,n="http://127.0.0.1/birdsprite.png";tripleflapInit()}
Rails预编译器似乎已经重命名了变量,tripleflap.js无法找到它们
是否可以在资产中禁用变量重命名?尝试将变量定义移到函数之外,或者仅从前面删除变量定义,如下所示:
function TwitterBird() {
twitterAccount = 'ulmicru';
showTweet = false;
birdSprite='http://127.0.0.1/birdsprite.png';
tripleflapInit();
}
我在谷歌上搜索了tripleflapInit
脚本并查看了一下。基本上,它直接在窗口上定义了一组配置变量,并希望您覆盖它们;总的来说,这是一个相当拙劣的剧本,但这不是重点
因为您是在使用var
的函数中定义birdSprite
,所以实际上您是在为该函数定义一个新的局部变量。即使minifier没有重命名它,定义的窗口tripleflapInit
也不会使用它,而是查看窗口上定义的变量
我不知道为什么会出现这样的错误,即未定义birdSprite
,但可能是编译器混淆了它,认为它未被使用而将其删除
function TwitterBird() {
twitterAccount = 'ulmicru';
showTweet = false;
birdSprite='http://127.0.0.1/birdsprite.png';
tripleflapInit();
}