假設您有一個需要在頁面上運行的腳本來覆蓋JavaScript的JSON。 stringify,你會如何確保你的代碼使用原始的字符串而不是被覆蓋的字符串?如何在Javascript中恢復重寫函數的原始狀態
3
A
回答
2
雖然我會選擇在其他答案之一,這裏的情況下的解決方案時:
- 頁無法改變,因此,
- 代碼不能在代碼覆蓋JSON.stringify之前運行,因此;
- 代碼不能保存原始函數對象(以恢復它或稍後顯式使用它)。
這裏有那麼一個黑客:
- 創建一個IFRAME元素。
- 訪問IFRAME元素的
contentWindow
屬性;這應該包含原始的(或「新的未觸及的」)JSON對象,並因此包含原始的JSON.stringify函數。
3
如果您要創建庫,請將其作爲JSON.stringify
應符合標準行爲的要求。
對您的代碼提出嚴格要求沒有任何錯誤,並且它實際上是一個好主意。你只需要確定文件的要求。
顯然,如果原件被永久覆蓋,則無法使用它。將負擔放在最終用戶上是一個更好的解決方案。
如果這不是針對圖書館,而是針對個人項目,那麼您應該簡單地拒絕加載任何第三方代碼,這些代碼會做一些愚蠢的事情,而不會像使用不合格的方法替換符合方法一樣愚蠢。
1
在覆蓋之前對JSON.stringify
進行備份。如果您無法對其進行備份,請使用a shiv。
相關問題
- 1. 如何將GUI的狀態恢復到原始狀態?
- 2. 恢復到原始狀態GSAP - TweenlineMax
- 3. 恢復查看原始xml狀態
- 4. 如何在動畫後將視圖恢復到原始狀態?
- 5. 如何在git中將一個文件恢復到其原始狀態?
- 6. Javascript函數重寫原型
- 7. 如何恢復BottomNavigationView狀態?
- 8. 如何在純JavaScript中重寫原生JS函數(canvas的drawImage())?
- 9. UICollectionView狀態還原:恢復所有UICollectionViewCells
- 10. 恢復原始值
- 11. 骨幹模型恢復到原始狀態
- 12. 從noConflict模式恢復JQuery到其原始狀態
- 13. Ember模型生命週期,並恢復到原始狀態
- 14. 滾動時,圖像恢復爲原始狀態uitableview
- 15. 無法將stdout恢復到原始狀態(僅限於終端)
- 16. css3動畫保持恢復到原始狀態
- 17. 懸停功能未恢復到其原始狀態
- 18. 提交按鈕兩個功能恢復到原始狀態
- 19. 如果再次點擊按鈕,如何將動畫恢復到原始狀態?
- 20. 如何讓jQuery點擊事件恢復到原來的狀態?
- 21. NSPopUpButton恢復到初始狀態
- 22. 如何恢復複選框狀態
- 23. 將Android活動狀態恢復到它開始的狀態
- 24. Boost variate_generator - 寫入和恢復其狀態
- 25. 加載後Mod重寫恢復爲原始URL
- 26. 如何在恢復w/o savedInstanceState後恢復碎片狀態?
- 27. jQuery的TokenInput庫 - 如何恢復到初始狀態
- 28. iOS狀態恢復
- 29. 恢復OpenGL狀態
- 30. 使用CodeCeption(PHP)恢復數據庫中的「恢復」狀態
運行你的代碼的其他代碼有機會修改過嗎?我嚴重懷疑你可以找到變量(或函數,在這種情況下)之前有什麼被覆蓋... – tucuxi
爲什麼你需要這樣做? – Ryan
http://stackoverflow.com/questions/8580431/recovering-built-in-methods-that-have-been-overwritten 似乎你可以創建一個iframe,並訪問其(全新的,未修改的)內容。另外,你的問題是這個問題的一個重複,應該像這樣關閉。 – tucuxi