Обнаружение iframe верхнего уровня на вложенной веб-странице iframes

#javascript #iframe #google-chrome-extension #cross-domain

Вопрос:

Я использую расширение Chrome для вставки веб-страниц в виде фреймов внутри одной из внутренних страниц моего расширения.

Удаление заголовков перекрестного происхождения из iframes, так что они отображаются просто отлично.

И установка поля "all_frames": true в манифесте расширения, которое позволяет вводить мой контент-скрипт на все страницы, а также на фреймы внутри них.

манифест.json :

 "content_scripts": [
    {
        "matches": [
            "<all_urls>"
        ],
        "all_frames": true, //<------
        "run_at": "document_idle",
        "js": [
            "js/content-script.js"
        ]
    }
],
 

Проблема в том, что:

Это вводит мой контент-скрипт во ВСЕ фреймы внутри веб-страниц (на некоторых веб-сайтах уже есть фреймы, поэтому здесь мы получаем ситуацию с вложенными фреймами)..

Мне нужно обмениваться сообщениями только с iframe верхнего уровня. Меня не волнуют вложенные дочерние кадры внутри страницы.

Я попытался обнаружить родительское окно следующим образом:

content-script.js

 if (window !== window.top) {
    console.console('iframe');
} else {
    console.console('NOT iframe');
}
 

Но это всегда iframe так, потому что , ну, я вводю саму веб-страницу верхнего уровня в качестве iframe внутри моего расширения.

Мой вопрос таков:

Как я могу определить только iframe верхнего уровня?

Итак, если это так сейчас:

 <iframe name="1">
    <iframe name="2">
        <iframe name="3"></iframe>
    </iframe>
</iframe>
 

Как я могу определить, работает ли этот скрипт внутри iframe #2 ?

Комментарии:

1. Одна вещь, которую следует учитывать, — это предоставление вашему фрейму верхнего уровня a name . По умолчанию window.name это пустая строка, которую вы можете подтвердить в консоли на любой странице