2009-06-04 2 views
4

Код товара:Может ли javascript работать внутри iframe влиять на главную страницу?

Мой нижестоящий код вытаскивает запрос из моей БД и затем использует inner.HTML = для отображения данных внутри div. Он отлично работает в этом оригинальном использовании.

Однако приведенная ниже версия вызывается внутри iFrame, поскольку она используется для обновления страницы.

страница не содержит ошибок и JavaScript пожаров, однако последняя строка не работает ...

Я просто понял, что, возможно, так как она загружается в скрытом плавающем фрейме она пытается установить innerHTML из div внутри iFrame, и это, конечно, не сработает.

Это то, что происходит? Это не имеет смысла, потому что у меня есть другой скрипт, который называет JavaScript в конце его таким же образом, и он отлично работает.

<?php 
    while ($row = mysql_fetch_array($result)) 
    { 
     $p = $p.'<div id="left"><img src="http://www.sharingizcaring.com/bleepV2/images/thumbs/'.$row[image].'" /></div>'; 
     $p = $p.'<div id="right"><h2>'.$row[artist].' - '.$row['title'].'</h2><br>'.$row['message'].'<br>'; 
     $p = $p.'<a href="http://www.sharingizcaring.com/bleepV2/'.$row[username].'">'.$row[username].'</a> '.$row[date].'</div>'; 
     $p = $p.'<div style="clear: both;"></div>'; 
     $p = $p.'<div id="dotted-line"></div>'; 
    } 


    $p = addslashes($p); 
?> 

<script> 

     alert('posts are firing? '); 

     document.getElementById('posts').innerHTML = 'why doth this faileth?'; 
</script> 

ответ

5

Вы можете это сделать! Read here for more info

Вы можете повлиять на документ содержит IFRAME, устанавливая и переменные из окна элемента:

// normally you use... 
var whatever = "value"; 

// use the window object instead, which is shared 
// between the iframe and the parent 
window.whatever = "value"; 

Другой вещь, которую вы должны знать, что вы можете получить доступ к основному документу через родительский объект

внутри фрейма, вы можете использовать ...

parent.someattr; 

// or try this 
parent.getElementById('some_element'); 
+0

Я просто понял, родителю. был частью моей проблемы. Как мне открыть окно? window.getElementById и тому подобное? – ian

+0

«Окно». часть - это еще более глобальная область, которую вы можете использовать для переменных. – Kip

+0

примечание: я не рекомендую использовать окно, если вы НЕ ДОЛЖНЫ ... область - прекрасная и полезная вещь ... и это бесполезно, если все глобально – Jiaaro

1

Часть в iframe не считается одним и тем же документом.

2

Я думаю, что вы хотите:

parent.getElementById('posts').innerHTML = 'why doth this faileth?'; 
+0

+ для «почему это угасает?» –

+1

@ IvanIvković спасибо, но я просто скопировал это из вопроса. :) – Kip

Смежные вопросы