Показать сообщение отдельно
  #28 (permalink)  
Старый 29.10.2012, 01:21
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от devote
ну вот, хоть один разумный вариант)))

тока не:
frame.contentWindow.Function.toString
а вот:
frame.contentWindow.Function.prototype.toString
думал, что же лучше выбрать, но остановился на более коротком варианте

да и какая разница, собственно ?

alert(Function.prototype.toString === Function.toString);


Сообщение от devote Посмотреть сообщение
// 1. создаём фрейм.
var frame = document.createElement("iframe");
document.documentElement.appendChild( frame );
 
// 2. тырим из него toString
var Func_toString = frame.contentWindow.Function.prototype.toString; // для проверки функций
var Obj_toString = frame.contentWindow.Object.prototype.toString; // для проверки объектов
 
// 3. это объект, у которого заменён toString.
var myEvilObj = { toString: function () { return "WHAHAHA"; }  };

// 3.1. это функция у которой сменили
var x = function() {}
x.toString = function() { return "lalala" }
 
// 4. если результаты их действия одинаковы, то никто ничего не заменял.
alert( Obj_toString.call(myEvilObj) !== myEvilObj.toString() ); // true - заменили
alert( Func_toString.call(x) !== x.toString() ); // true - заменили


var y = function() {}
alert( Func_toString.call(y) !== y.toString() ); // false - не заменяли
если не изменяет память, нужно дождаться события load у фрейма ... нет? похоже, я уже сплю
Ответить с цитированием