Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Как добавить событие на document в Iframe ? (https://javascript.ru/forum/events/29852-kak-dobavit-sobytie-na-document-v-iframe.html)

Deff 13.07.2012 22:50

Как добавить событие на document в Iframe ?
 
Есть главная и фрейм c этого же домена,
После onload фрейма -на body фрейма необходимо добавить событие onunload - Подскажите...буду рад всем ответам! (доступа к серверу - нет!

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<link rel="stylesheet" type="text/css" href="http://forum.mybb.ru/style/Mybb_Bend/Mybb_Bend.css" />
</head>
<body>
<iframe id="Iframe01" name="iframe01" src="../frameLoad.html" onload="LoadF()">
<script type="text/javascript">
LoadF(){
 //Tут добавить событиеж
}
</script>
</body>
</html>

lord2kim 13.07.2012 23:17

Цитата:

Сообщение от Deff (Сообщение 188610)
Есть главная и фрейм c этого же домена,
После onload фрейма -на body фрейма необходимо добавить событие onunload - Подскажите...буду рад всем ответам! (доступа к серверу - нет!

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<link rel="stylesheet" type="text/css" href="http://forum.mybb.ru/style/Mybb_Bend/Mybb_Bend.css" />
</head>
<body>
<iframe id="Iframe01" name="iframe01" src="../frameLoad.html" onload="LoadF()">
<script type="text/javascript">
LoadF(){
 //Tут добавить событиеж
}
</script>
</body>
</html>

function LoadF(){
	document.getElementsByName('iframe01')[0].contentWindow.document.getElementsByTagName('body')[0].onunload = function() { alert("валим") };
	alert(document.getElementsByName("iframe01")[0].contentWindow.document.getElementsByTagName("body")[0].onunload);
}

cyber 13.07.2012 23:22

а почему
document.getElementsByTagName('body')[0]
а не
document.body ?

lord2kim 13.07.2012 23:26

Цитата:

Сообщение от cyber (Сообщение 188620)
а почему
document.getElementsByTagName('body')[0]
а не
document.body ?

по привычке...

Deff 14.07.2012 00:29

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<link rel="stylesheet" type="text/css" href="http://forum.mybb.ru/style/Mybb_Bend/Mybb_Bend.css" />
</head>
<body>
<script type="text/javascript">
alert(document.URL)
 //Tут добавить событие;
function LoadF(){
document.getElementsByName('iframe01')[0].contentWindow.document.getElementsByTagName('body')[0].onclick = function() {
  alert("Клик")
   };
   alert('Load');
}
</script>
<iframe id="Iframe01" name="iframe01" src="http://lookatcode.com/showhtml" onload="LoadF()">

</body>
</html>
:( Чот не хочет - (* аlertы, чтобы - показать что загрузка есть и адрес фрейма тот жа
События onclick - не добавилось!

cyber 14.07.2012 00:43

в опере показало все ок

Deff 14.07.2012 00:45

cyber,
И что - ти кликаешь по фрейму и есть - alert("Клик") ?

cyber 14.07.2012 01:16

да не чет я затупил
клик не срабатывает...

devote 14.07.2012 02:46

Цитата:

Сообщение от Deff
И что - ти кликаешь по фрейму и есть - alert("Клик") ?

потому что высота body элемента 0px от того и нет клика, надо так делать:
<!DOCTYPE HTML>
<html>
<head>
<link rel="stylesheet" type="text/css" href="http://forum.mybb.ru/style/Mybb_Bend/Mybb_Bend.css" />
</head>
<body>
<script type="text/javascript">
    alert(document.URL)
    //Tут добавить событие;
    function LoadF(){
        var b = document.getElementsByName('iframe01')[0].contentWindow.document.getElementsByTagName('body')[0];
        b.style.height = "100%";
        b.onclick = function() {
            alert("Клик")
        }
        alert('Load');
    }
</script>
<iframe id="Iframe01" name="iframe01" src="http://lookatcode.com/showhtml" onload="LoadF()">
 
</body>
</html>

devote 14.07.2012 02:47

body это тоже блочный элемент, он как дивак, если есть внутри что-то тогда и растягивается.. в противном случае просто высота 0px

Deff 14.07.2012 02:59

devote,
CПС! (плюсы - не дают ставить

Deff 14.07.2012 03:04

devote,
А еще, :write: не подскажете - как добавить простейший скрипт во фрейм - (<script>alert('A')</script> ) *создание тега на родителе и вставка - не вышло(может как и с body - что-то упустил ?

devote 14.07.2012 03:21

Цитата:

Сообщение от Deff
не подскажете - как добавить простейший скрипт во фрейм

<!DOCTYPE HTML>
<html>
<head>
<link rel="stylesheet" type="text/css" href="http://forum.mybb.ru/style/Mybb_Bend/Mybb_Bend.css" />
</head>
<body>
<script type="text/javascript">
    alert(document.URL)
    //Tут добавить событие;
    function LoadF(){
        var doc = document.getElementsByName('iframe01')[0].contentWindow.document;

        var script = doc.createElement( 'script' );
        script.text = "alert('Hello!')";
        doc.body.appendChild( script );

        doc.body.style.height = "100%";
        doc.body.onclick = function() {
            alert("Клик")
        }
        alert('Load');
    }
</script>
<iframe id="Iframe01" name="iframe01" src="http://lookatcode.com/showhtml" onload="LoadF()">
  
</body>
</html>

Deff 14.07.2012 03:23

devote, ++ Бу должен СПС

Deff 14.07.2012 03:42

devote,

А можно тож самое можно сделать не тегом <script>, а созданием и добавкой функции с автозапуском ?

Deff 14.07.2012 19:11

:)

devote 14.07.2012 19:48

Цитата:

Сообщение от Deff
а созданием и добавкой функции с автозапуском ?

я тебя не совсем понял что ты имеешь ввиду

Deff 14.07.2012 20:06

devote,
Ну мы же можем создать функцию на родителе ?
(function () {
 alert('Hello')
}())

Очевидно наверно также мы можем создать и во фрейме (находясь на родителе?

devote 14.07.2012 20:12

Цитата:

Сообщение от Deff
Очевидно наверно также мы можем создать и во фрейме (находясь на родителе?

ну ты можешь создать функцию у родителя, а функции передать контекст iframe
(function( window, document ) {
    alert( 'Hello' )
}(
    document.getElementsByName('iframe01')[0].contentWindow,
    document.getElementsByName('iframe01')[0].contentWindow.document
));

Deff 14.07.2012 20:17

devote,
Ды чот помню видел - типо присвоения



<!DOCTYPE HTML>
<html>
<head>
<link rel="stylesheet" type="text/css" href="http://forum.mybb.ru/style/Mybb_Bend/Mybb_Bend.css" />
</head>
<body>
<script type="text/javascript">
    alert(document.URL)
    //Tут добавить событие;
    function LoadF(){
        var doc = document.getElementsByName('iframe01')[0].contentWindow.document;

doc=(function () {
 alert('Hello')
}())

        doc.body.style.height = "100%";
        doc.body.onclick = function() {
            alert("Клик")
        }
        alert('Load');
    }
</script>
<iframe id="Iframe01" name="iframe01" src="http://lookatcode.com/showhtml" onload="LoadF()">
  
</body>
</html>

Deff 14.07.2012 20:17

:dance:

Deff 14.07.2012 20:20

В Мозилле
doc=(function () {
 alert('Hello')
}())

не Пашет ....Хнык

devote 14.07.2012 20:53

<!DOCTYPE HTML>
<html>
<head>
<link rel="stylesheet" type="text/css" href="http://forum.mybb.ru/style/Mybb_Bend/Mybb_Bend.css" />
</head>
<body>
<script type="text/javascript">
    alert(document.URL)
    //Tут добавить событие;
    function LoadF(){
        var win = document.getElementsByName('iframe01')[0].contentWindow,
            doc = win.document;
 
        win.eval.call( win, (function(){

            // тут все выполняется в контексте iframe
            function lala() {
                alert( 'lala' );
            }

            alert( 'Hello' );

        }).toString().replace(/^function\(\){/,'').replace(/}$/,''));
 
        var script = doc.createElement( 'script' );
        script.text = "lala()";
        doc.body.appendChild( script );

        doc.body.style.height = "100%";
        doc.body.onclick = function() {
            alert("Клик")
        }
        alert('Load');
    }
</script>
<iframe id="Iframe01" name="iframe01" src="http://lookatcode.com/showhtml" onload="LoadF()">
   
</body>
</html>

Deff 14.07.2012 21:40

devote,
Пасиб, - буду пробовать!


Часовой пояс GMT +3, время: 17:19.