Member 13223623 Ответов: 1

Запрос для получения всех DOM-элементов (div), используемых на внешнем веб-сайте, путем рендеринга внешней страницы в iframe.


Я не получаю дочерние узлы внутри IFrame.

Я не могу получить доступ к элементам внутри Iframe, а также.Если я попытаюсь оказать google.com В Ифрейме, я получаю следующее сообщение об ошибке.
"Отказался показывать 'https://www.google.co.in/' в кадре, потому что он установил 'X-Frame-Options' на 'sameorigin'."

Ниже приводится еще одна ошибка при добавлении события в IFrame
Заблокировал рамку с происхождением "http://localhost:53242-от доступа к кадру перекрестного происхождения.

Что я уже пробовал:

код:
"в<iframe в код="дисплей" СРЦ="https://www.w3schools.com/"&ГТ;&ЛТ;/iframe и GT и GT;"
скрипт:
элементы = документ.querySelectorAll('iframe>*');

1 Ответов

Рейтинг:
1

F-ES Sitecore

Вы не можете получить доступ к DOM страниц в iframe, если они не были запрограммированы таким образом, чтобы они давали доступ к вашему сайту. Это делается по соображениям безопасности. Кроме того, когда дело доходит до google, они настроили свой сайт таким образом, что вы вообще не можете использовать его в iframe. Нет никакого способа обойти эти меры безопасности, иначе они были бы бессмысленны, и, кроме того, нет никакой этической причины делать такие вещи.


Member 13223623

Спасибо за разъяснение. Не могли бы вы подсказать мне, каким образом я могу выполнить эту задачу?

Задача: пользователь дает ввод URL-адреса в качестве входных данных, и я должен загрузить страницу, и пользователь должен иметь возможность выбрать, какую часть страницы он хочет получить DOM-элементы.

То, что я сделал, это:
С помощью пакета HTMLagility я могу получить доступ ко всем элементам DOM, используемым на веб-странице.Взяв URL-адрес в качестве входных данных.

HtmlWeb web = новый HtmlWeb();
HtmlDocument doc = web. Load(Url);
foreach (узел HtmlNode в doc.DocumentNode.Потомки())
{
Приставка.WriteLine(узел.Имя + "" + узел.GetAttributeValue ("Id", true));
}

Но я в состоянии выполнить вышеприведенную задачу.
Заранее спасибо

F-ES Sitecore

Вы не можете сделать это с помощью веб-страницы и js, вам нужно будет написать плагин для браузера или что-то в этом роде.