2012-12-18 41 views
0

我的用於執行該任意js代碼唯一的要求是,某些全局變量/功能(例如setInterval)不被暴露。在自定義全局上下文中執行任意的javascript

我目前的戰略是通過JS代碼解析,以及爲全球每一個參考var聲明(在封閉始封)。

我不知道是否有解決這個任何其他明顯的方式。

也只是爲了澄清,這個任意代碼不被使用的東西像eval運行。相反,它被封裝在一個閉包中並附加到基本代碼中。

+0

如果你有事情的JS不能做一個小的有限的名單中,一念之間將覆蓋函數和變量與自己的價值觀像window.alert = myalert。這顯然使得它們全局不可用。以防萬一它適合你的目的。 – closure

+0

你可以將代碼封裝在閉包中(閉包只是一個函數)。那麼每個全球性聲明都會成爲關閉的本地。 –

+0

@raghavv是的,這是更好的方法,正是我需要做的。我無法相信我錯過了這個顯而易見的要點。請留下一個答案,我會接受。謝謝! – Dave

回答

1

其中一個選項是通過提供自己的函數或變量覆蓋全局。例如:

window.alert =函數(){
//你的代碼放在這裏
//如果需要
可選調用window.alert}

如果這應該是可控有一小部分你想隱藏的東西。這將使他們全球不可用。

相關問題