アップデート
おそらく、より実行可能な方法は、空<iframe>
を動的に作成することです。
String.prototype.split
親ウィンドウで汚染されているが、からクリーンなものを取得する例を次に示します<iframe>
。
<html>
<head>
<script type="text/javascript">
function onBodyLoad() {
String.prototype.split = function() { return 'foo'; }; // contaminate original window
console.log(String.prototype.split); // yeah, it's contaminated
var acr = document.getElementById("accessor");
acr.onclick = function ()
{
var dummyFrame = document.createElement("iframe");
document.body.appendChild(dummyFrame);
console.log(dummyFrame.contentWindow.String.prototype.split); // uncontaminated
}
}
</script>
</head>
<body onload="onBodyLoad()">
<a href="#" id="accessor">Access iframe Window object</a>
</body>
</html>
普通の意味ではありません。そこにはいくつかのエキゾチックなハックがあるかもしれませんが.
私が考えることができる唯一の方法は、コードが他のスクリプトよりも先に読み込まれるようにすることでした。その要件が満たされていれば、必要なグローバル変数を安全な場所に複製できます。