2015-04-17 3 views
0

Я видел несколько сообщений об этом, но, похоже, я немного озадачен, почему никто из них не работает.Доступ к тегу из iFrame к его родительскому

Вот вид стека, что я пытаюсь достичь:

<html> 
    <head>...</head> 
    <body> 
    <div>Some stuff, images, text</div> 
    <div><audio id="audio"><source> src="me.mp3" /></audio></div> 
    <div>Some stuff, images, text</div> 
    <div> 
     <iframe src="file.html"> 
      #document 
      <html> 
       <head>...</head> 
       <body> 
        <div><button id="stopPlay">Stop Play</button></div> 
       </body> 
      </html> 
     </iframe> 
    </div> 
    <div>Some stuff, images, text</div>     

    </body> 
</html> 

Было высказано предположение, что для доступа к аудио тегов, вы бы использовать что-то вроде:

window.parent.document.getElementById('audio'); 

Который дает мне ошибка происхождения, хотя оба файла находятся на одном сервере. Поэтому я добавляю снова, как предложено document.domain = "[email protected]", и поместите его в iframe и parent. Но все же дает мне ошибку, связанную с DOM.

Как я собираюсь подняться по стеку, а затем найти его, чтобы найти элемент, как бы я это сделал, когда другие предложения работали для других?

+0

Работает отлично на моем конце, это ваш точный код? Я буквально скопировал его в два файла, и я смог манипулировать звуковым тегом из iframe. Я использовал localhost как домен. – Patrick

+0

Это ошибка, которую я получаю:> [Ошибка] Заблокирован кадр с исходным «нулем» от доступа к кадру с нулевым значением «null». Протоколы, домены и порты должны совпадать. \t Ошибка в playparent: TypeError: undefined не является объектом (оценка 'window.parent.document.getElementById') –

+0

Если я добавлю 'document.domain =" [email protected] "', я получаю эту ошибку в playparent : Ошибка: SecurityError: DOM Exception 18 –

ответ

1

Единственный способ, которым я смог воспроизвести эту ошибку, - это использовать локальную файловую систему. Кажется, вы пытаетесь получить доступ к своему html-файлу из локальной файловой системы.

file://c:/wamp/www/foo.htm - это единственный способ воспроизвести это, и это известная ошибка для хрома. Также имеет смысл в каком-то regrd, так как нет domain, поэтому происхождение null

+0

Хорошо, поэтому, если я добавлю это на сервер, я должен получить другой результат. Я использую Safari в данный момент. –

+1

Да, он должен работать отлично. Я предлагаю вам установить локальный хостинг на вашем компьютере (wamp/xamp), это позволит вам лучше тестировать! также, в следующий раз упомянем, что вы загружаетесь из файловой системы: P – Patrick

+1

Спасибо, я должен был это понять. Еще раз спасибо @Patrick –

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