Скрипт содержимого Chrome не загружается в около: пустая страница

Я разрабатываю расширение Chrome, которое будет загружать скрипт содержимого в соответствии со следующим манифестом:

"content_scripts" : [
    {
      "matches" : [ "<all_urls>" ],
      "js" : [  "scripts/namespace/namespace.js",
                "scripts/log/Logger.js"]
       "run_at" : "document_start",
       "all_frames" : true
     }
]

Существует макет сайта, HTML-код которого:

<html>
<head>
<script language=javascript>
    var test;

    function makewindow() {
        test=window.open('mywin');
        test.window.document.write("<html><body><A onclick=window.close(); href= > click Me to Close</A>");
        test.window.document.write(" ---- </body></html>");
    }
</script>

</head>
<body>
<a href="" onclick="makewindow();return false;" >Click me to launch the external Window</a>
</body>
</html>

Если я нажму на ссылку A, и она запустится makewindow функция и всплывает новое окно.

URL нового окна about:blankи содержимое скрипта не загружается в этом новом окне.

Как загрузить контентный скрипт в этом новом окне?

2 ответа

Решение

Обновление: начиная с Chrome 37 (26 августа 2014 г.) вы можете установить match_about_blank флагдок true стрелять за about:blank страницы.

Смотрите ответ alib_15 ниже.



Для Chrome до версии 37:

Вы не можете загрузить скрипт содержимого Chrome (или пользовательский скрипт) на about:blank страницы.

Это потому что about: не является одной из "разрешенных схем". Из расширений Chrome Match Patterns:

Шаблон соответствия - это, по сути, URL, который начинается с разрешенной схемы (http, https, file, ftp, или же chrome-extension)...


В этом случае вам может быть лучше угнать makewindow(),

В файле манифеста добавьте строку:

"content_scripts" : [
{
  "matches" : [ "<all_urls>" ],
  "match_about_blank" : true,
  "js" : [  "scripts/namespace/namespace.js",
            "scripts/log/Logger.js"]
   "run_at" : "document_start",
   "all_frames" : true
 }
]
Другие вопросы по тегам