假设您有一个需要在页面上运行的脚本来覆盖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