0
我的用於執行該任意js代碼唯一的要求是,某些全局變量/功能(例如setInterval
)不被暴露。在自定義全局上下文中執行任意的javascript
我目前的戰略是通過JS代碼解析,以及爲全球每一個參考var
聲明(在封閉始封)。
我不知道是否有解決這個任何其他明顯的方式。
也只是爲了澄清,這個任意代碼不被使用的東西像eval
運行。相反,它被封裝在一個閉包中並附加到基本代碼中。
我的用於執行該任意js代碼唯一的要求是,某些全局變量/功能(例如setInterval
)不被暴露。在自定義全局上下文中執行任意的javascript
我目前的戰略是通過JS代碼解析,以及爲全球每一個參考var
聲明(在封閉始封)。
我不知道是否有解決這個任何其他明顯的方式。
也只是爲了澄清,這個任意代碼不被使用的東西像eval
運行。相反,它被封裝在一個閉包中並附加到基本代碼中。
其中一個選項是通過提供自己的函數或變量覆蓋全局。例如:
window.alert =函數(){
//你的代碼放在這裏
//如果需要
可選調用window.alert}
如果這應該是可控有一小部分你想隱藏的東西。這將使他們全球不可用。
如果你有事情的JS不能做一個小的有限的名單中,一念之間將覆蓋函數和變量與自己的價值觀像window.alert = myalert。這顯然使得它們全局不可用。以防萬一它適合你的目的。 – closure
你可以將代碼封裝在閉包中(閉包只是一個函數)。那麼每個全球性聲明都會成爲關閉的本地。 –
@raghavv是的,這是更好的方法,正是我需要做的。我無法相信我錯過了這個顯而易見的要點。請留下一個答案,我會接受。謝謝! – Dave