【发布时间】:2012-10-22 09:17:43
【问题描述】:
所以,我今天才注意到您显然可以在 chrome 控制台中运行 javascript。我不知道你能做到这一点。真的很酷。
在我的 rails 应用程序中,我有一个外部 javascript 页面。该页面上的一些变量我希望是全局的,以便 JS 文件中的所有函数都可以访问它们。例如,我有一张地图,我希望地图对象在 javascript 文件中是全局的,因为这样我的所有函数都可以访问一个地图变量而不是创建自己的地图变量,而且我可以将复杂的操作分解为更小的函数。
这一切都很好,我知道该怎么做,而且效果很好。我现在的问题是,我可以保护变量不受外部影响吗?例如,您可以从 chrome 控制台更改所有 javascript 类变量的值。以及地图中的方法是可访问和可执行的。我已将地图设置锁定在其中一个页面上,因此它不可缩放或可移动,但是从控制台我可以简单地说map.setZoom(11),地图将缩放到11..我可以输入map.dragable = true,然后你可以拖动地图..我真的不喜欢这个..
这还不算太糟糕,但就像用户启用地图拖动和缩放并不是世界上最糟糕的事情一样......但我仍然想禁用它。有任何想法吗?
编辑
感谢大家的回答和cmets。我想我只会诉诸不将任何可能变成恶意的东西放入我的 javascript 中,并做一些事情,例如将我的 map 变量传递给必要的函数以减慢人们的速度。
【问题讨论】:
-
您可以将所有内容包装在一个新的函数范围内。
-
也就是说,确实没有理由使用全局变量。最好在必要时更改您的方法以将地图作为参数。
-
嗯...这似乎是更好的编码标准?
标签: javascript google-chrome console javascript-security