Не могу очистить элементы внутри элемента #document - PullRequest
0 голосов
/ 03 июля 2018

Для одного из моих расширенных проектов Chrome я извлек содержимое HTML другой веб-страницы в тег <iframe> текущей веб-страницы, динамически заполняя его атрибут src. Теперь я хочу очистить несколько значений из тега <iframe>. Но jQuery всегда показывает этот тег <iframe> как пустой. Причина, по которой я пользуюсь, заключается в том, что внутри извлеченной страницы есть несколько файлов JavaScript, которые я хочу выполнить перед тем, как начать очистку. Я также пытался установить таймеры ожидания, но jQuery всегда показывает, что тег <iframe> пуст (хотя атрибут src установлен).

После исследования я обнаружил, что <iframe> имеет странное значение #document, за которым следуют обычные HTML-теги. Интересно, является ли это причиной того, что jQuery не может пройти через иерархию DOM внутри тега <iframe>.

См. Ниже снимок экрана «просмотра» требуемого тега <iframe>.

enter image description here

Кроме того, основная веб-страница, на которой существует тег <iframe>, находится на том же веб-сайте, что и URL новой страницы (хотя и в другом поддомене). И я не получаю никаких предупреждений о правах доступа в Chrome, поэтому я не подозреваю, что это междоменная проблема.

Изменить:
Даже после 10 секунд ожидания:

console.log($("#insertHere").text());

возвращается пустым. И,

console.log($("#insertHere").parent().html());

возвращает: <iframe id="insertHere" src="/courses/intro..." style="width:0;height:0;border:0; border:none;"></iframe>

Ответы [ 2 ]

0 голосов
/ 03 июля 2018

#document является объектом документа страницы для iFrame DOM.

Попробуйте получить доступ к document в iframe, например,

var frame = document.getElementById('#hidden-frame');
console.log(frame.document.body);

Вы также можете попробовать использовать Content Script и разрешить его на всех страницах с <all_urls>, который должен быть загружен с содержимым iframe, и использовать его для отправки содержимого background script с использованием сообщений.

0 голосов
/ 03 июля 2018

Вы можете получить контент iframe с таким кодом:

$('#insertHere').contents().find("html").html();


$('#insertHere').contents().find("#MathJax_Message").text();

Если iframe находится в другом домене (кажется, не в вашем случае), защита вашего браузера через межсайтовый скриптинг (XSS) заблокирует его.

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