Может ли JavaScript, работающий внутри iframe, повлиять на главную страницу? - PullRequest
4 голосов
/ 04 июня 2009

Частичный код:

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

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

На странице нет ошибок, и JavaScript запускается, однако последняя строка не работает ...

Я только что понял, что, возможно, поскольку он загружается в скрытый iFrame, он пытается установить 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>

Ответы [ 4 ]

5 голосов
/ 04 июня 2009

Вы можете сделать это! Подробнее читайте здесь

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

// 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');
2 голосов
/ 04 июня 2009

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

parent.getElementById('posts').innerHTML = 'why doth this faileth?';
1 голос
/ 04 июня 2009

Вы должны использовать родительский.

1 голос
/ 04 июня 2009

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

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