Recovering built-in methods that have been overwritten

一曲冷凌霜 提交于 2019-11-27 14:42:18
var iframe = document.createElement("iframe");
document.documentElement.appendChild(iframe);
var _window = iframe.contentWindow;
String.prototype.split = _window.String.prototype.split;
document.documentElement.removeChild(iframe);

Use iframes to recover methods from host objects.

Note there are traps with this method.

"foo".split("") instanceof Array // false
"foo".split("") instanceof _window.Array // true

The best way to fix this is to not use instanceof, ever.

Also note that var _split = String.prototype.split as a <script> tag before the naughty script or not including the naughty script is obvouisly a far better solution.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!