在JavaScript中访问原始全局变量和属性

前端之家收集整理的这篇文章主要介绍了在JavaScript中访问原始全局变量和属性前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我正在研究注入网页的代码(使用浏览器插件或脚本标签).

问题是我们想要使用全局对象和变量,如JSON,window.location,String.split等,并且这些实现可能已被网页更改.这可能会使我们的代码失败,这是一个安全问题.

例:

>>> String.prototype.split = function() { return 'foo'; };
function()
>>> 'a,b,c'.split(',');  // gives unexpected result
"foo"

那么,是否有办法访问浏览器的默认实现对象和函数,就像它们被更改之前一样?它不一定是标准的,我只是希望功能存在.

最佳答案
更新

也许更可行的方法是创建一个空的< iframe>动态.

这是一个在父窗口中污染String.prototype.split的示例,但从< iframe>中获取一个干净的示例.

不是一般意义上的;虽然那里可能有一些异国情调的黑客.

我能想到的唯一方法是确保在任何其他脚本之前加载代码.如果满足该要求,则可以将必要的全局变量克隆到安全位置.

猜你在找的JavaScript相关文章