2016-10-29 5 views
0

У меня есть html-страница, которая имеет iframe с атрибутом src, указывающим на другую страницу html, в которой уже есть некоторый контент.Изменение содержимого HTML в iframe с использованием jQuery

parent.html

<body> 
    <iframe src="child.html"></iframe> 
</body> 

child.html

<body> 
    <p>test1</p> 
</body> 

parent.html также имеет функцию JQuery, которая пытается добавить пункт к телу child.html:

$(function(){ 
    var $iframe = $("iframe"); 
    $iframe.ready(function(){ 
     $iframe.contents().find("body").append("<p>test2</p>"); 
    }); 

}); 

Проблема в том, что функция не работает, абзац не добавляется. Интересная часть состоит в том, что если я удалю «child.html» из атрибута src iframe, абзац добавляется в пустую страницу html.

Невозможно ли изменить содержимое html-документа из iframe (когда документ уже содержит несколько элементов)?

Кроме того, нет никакой проблемы с междоменной политикой.

Заранее спасибо.

ответ

1

Похоже, что код выполняется до фактического загрузки содержимого iframe. Попробуйте использовать этот код:

$(document).ready(function(){ 
    var $iframe = $("iframe"); 
    $iframe.on('load', (function(){ 
     $iframe.contents().find("body").append("<p>test2</p>"); 
    }); 
}); 
+0

Да, это работает. Я пробовал это раньше, и я не видел, что в консоли была ошибка: «Некопать TypeError: a.indexOf не является функцией». для кого это интересно, я использовал решение из этого сообщения: http://stackoverflow.com/questions/37738732/jquery-3-0-url-indexof-error В любом случае, спасибо за помощь, я очень благодарен – fifth

+0

Обновился код в моем ответе, спасибо за головы :) –

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