Показать сообщение отдельно
  #12 (permalink)  
Старый 06.02.2013, 04:22
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Обман зрителя с псевдоклонированием фреймворка

1. Ставим скрипт библиотеки во фрейм,
2. ...якобы клонируем frame1.jQuery
3. Удаляем фрейм вместе со скриптом (можно наблюдать удаление - cпецом

Запускаем любые jQuery функции (тут считываю bоdy.html() ( Заметим что фрейма нет)
//Чисто коперфильд (Сам заю, что вру и где
//а хочется реально!
<!DOCTYPE>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
</head>
<body>

<script>

function TestLibFrame() { // 

  function Clone(a) {
    return a;
  }

  window.docThis = frame1.parent.document;
  window.$$ =  Clone(frame1.jQuery); //...якобы клонируем frame1.jQuery
  delete frame1.jQuery;//alert(frame1.jQuery); //...удаляем объект frame1.jQuery

  $$("iframe[name='frame1']",docThis).remove(); //Удаляем фрейм...

  var str = 'Запускаем jQuery на  странице без библиотеки:';
  alert(str +'\n\n' + $$("html",docThis).html());

}  


function Funk0(aa) {
var a='Cтавим javascript - библиотеку во фрейм'
var iframe = aa
var iframeDoc = iframe.contentWindow.document;
var b = iframeDoc.createElement('div');
b.innerHTML=a;//alert(b.innerHTML)
iframeDoc.body.appendChild(b);
var s = iframeDoc.createElement('script');
s.setAttribute("type","text/javascript");
s.src = "http://yandex.st/jquery/1.4.4/jquery.min.js";
//s.setAttribute("onload","parent.TestLibFrame()");
s.onload = function () {setTimeout("TestLibFrame()",4000);}
b.appendChild(s);
}

</script>
<iframe name=frame1 onload="Funk0(this)"></iframe>


</body>
</html>

Последний раз редактировалось Deff, 06.02.2013 в 04:55.
Ответить с цитированием