Проблема с parent в iframe.

Discussion in 'PHP' started by MisTY, 22 Jul 2012.

  1. MisTY

    MisTY New Member

    Joined:
    13 Jun 2011
    Messages:
    15
    Likes Received:
    2
    Reputations:
    0
    Добрый вечер. Помогите, пожалуйста решить следующую проблему. Для наглядности, сразу код:
    index.html:
    PHP:
    <script type="text/javascript">var a='переменная1';</script>
    <script type="text/javascript">var b='переменная2';</script>
    <script type="text/javascript" src="iframe.js"></script>
    iframe.js:
    PHP:
    document.write('<frameset rows="100%,*" border="0" frameborder="0" framespacing="0" framecolor="#000000"><frame src="page.html"><frame src=""><noframes>');
    page.html:
    PHP:
    <script>document.write(parent.a);</script>
    <script>document.write(parent.b);</script>
    так же на page.html имеется несколько попаданий обеих переменных в onclick.
    Собственно проблема: переменные попадают на страницу page.html только в случае захода из Яндекса или Рамблера (т.е. с их реферами), во всех остальных случаях не выдаётся ничего, либо выдаётся undefined (в зависимости от браузера). С чем это может быть связано?
     
    #1 MisTY, 22 Jul 2012
    Last edited: 22 Jul 2012
  2. MisTY

    MisTY New Member

    Joined:
    13 Jun 2011
    Messages:
    15
    Likes Received:
    2
    Reputations:
    0
    Ребят, ну что никто не знает почему parent работает только при заходе из Яндекса?
     
  3. MisTY

    MisTY New Member

    Joined:
    13 Jun 2011
    Messages:
    15
    Likes Received:
    2
    Reputations:
    0
    Очень жаль, что никто не знает. :(
    Может быть кто-нибудь подскажет рабочую альтернативу parent?
     
  4. |qbz|

    |qbz| Banned

    Joined:
    25 Dec 2009
    Messages:
    385
    Likes Received:
    169
    Reputations:
    65
    Непонятно.
    Где </фреймсет>?



    Переменные эти зависят от реферера?
     
  5. Apeckou

    Apeckou Elder - Старейшина

    Joined:
    23 Jan 2007
    Messages:
    143
    Likes Received:
    11
    Reputations:
    0
    твой код работает в ИЕ8, FF, Opera
    Не работает только в гуглохроме. почему - хороший вопрос
     
    1 person likes this.
  6. MisTY

    MisTY New Member

    Joined:
    13 Jun 2011
    Messages:
    15
    Likes Received:
    2
    Reputations:
    0
    PHP:
    <a href="#" onclick="location.href='http://site.ru/script.php?word='+parent.a+''">анкор</a>
    Закрывающийся фреймсэт есть, я здесь не до конца скопировала.
    Переменные никак не зависят от реферера. весь js приведён в первом сообщении.
    Я не увидела никакой зависимости от браузера - у меня работает во всех браузерах, в т.ч. и хроме, вся загвоздка только в переходе их поисковой системы.
     
    #6 MisTY, 31 Jul 2012
    Last edited: 31 Jul 2012
  7. Melfis

    Melfis Elder - Старейшина

    Joined:
    25 Apr 2011
    Messages:
    505
    Likes Received:
    105
    Reputations:
    53
    ff, opera, chrome:
    index.html, не должна содержать <body></body> (по спецификации):
    HTML:
    <html>
    <head>
    </head>
     <script type="text/javascript">var a='переменная1';</script> 
    <script type="text/javascript">var b='переменная2';</script> 
    <script type="text/javascript" src="iframe.js"></script> 
    </html>
    
    page.html
    HTML:
    <html>
    <head>
    </head>
    <body>
    <script>document.write(parent.a);</script> 
    <script>document.write(parent.b);</script>
    </body>
    </html>
    
    iframe.js
    HTML:
    document.write('<frameset rows="100%,*" border="0" frameborder="0" framespacing="0" framecolor="#000000"><frame src="page.html"><frame src=""></frameset><noframes>Нету фреймов</noframes>');
    
    Ну и на всякий случай надо делать валидную вёрстку, а не надеятся, что браузер сам додумает как лучше закрыть тег (это я про iframe.js, который у тебя).

    У меня на дебиане локально хром ругался, что обращение из фрейма происходит к другому домену (хотя всё было локально и в одной папке и политики безопасности не нарушало), видимо такой глюк просто.

    По идее это должно нормально работать.

    По идее я описал почему, если ты локально тестил.

    UPDATE:
    HTML:
     <a href="#" onclick="location.href='http://site.ru/script.php?word='+parent.a+''">анкор</a> 
    Приведи как это полностью на страницу вставляется, а то у меня есть мнение, что ты неправильно это делаешь.
     
    #7 Melfis, 31 Jul 2012
    Last edited: 31 Jul 2012
    1 person likes this.
  8. MisTY

    MisTY New Member

    Joined:
    13 Jun 2011
    Messages:
    15
    Likes Received:
    2
    Reputations:
    0
    Melfis, попробовала сейчас ваш код - ничего не изменилось, при заходе из гугла переменная не появляется на странице.
    Локально, на сколько я помню (сейчас нет возможности протестировать), не работало вообще. На данный момент всё тестируется на домене.
    А онклик вставляется так:
    PHP:
    <a href="#" onclick="location.href='http://'+'domain'+'.'+'ru'+'/'+'script.php?'+'word='+parent.b+'">анкор</a>
     
  9. |qbz|

    |qbz| Banned

    Joined:
    25 Dec 2009
    Messages:
    385
    Likes Received:
    169
    Reputations:
    65
    Не совсем понимаю, точнее совсем не понимаю связи перехода с реферером и передачи переменной, но все же, попробуйте не парент, а window.parent.
     
    2 people like this.
  10. MisTY

    MisTY New Member

    Joined:
    13 Jun 2011
    Messages:
    15
    Likes Received:
    2
    Reputations:
    0
    Сейчас попробывала протестировать на другом домене и всё почему-то заработало. Ребят, спасибо вам большое за желание помочь и извините что взболомутила воду.
     
    1 person likes this.
  11. |qbz|

    |qbz| Banned

    Joined:
    25 Dec 2009
    Messages:
    385
    Likes Received:
    169
    Reputations:
    65
    Ну хорошо, что все разрешилось.