0

Я разрабатываю расширение, которое добавляет пользовательскую панель инструментов вверху каждой страницы. Для этого я ввожу toolbar.html с расширением. Поскольку я новичок, я не уверен, как я могу получить доступ к элементам DOM текущей вкладки и как обновить недавно добавленный iframe данными из DOM текущей вкладки.Доступ к текущей вкладке DOM из динамического ввода Iframe из расширения и обновления iframe DOM

Вот манифест:

{ 
    "manifest_version": 2, 

    "name": "My Extension", 
    "description": "Extension to show custom toolbar", 
    "version": "1.0", 

    "browser_action": { 
    "default_icon": "icon.png", 
    "default_popup": "popup.html" 
    }, 
    "background":{ 
     "scripts":["background.js"] 
    }, 
    "content_scripts":[{ 
     "matches":["https://bitbucket.mycompany.com/*"], 
     "css":["styles.css"], 
     "js":["jquery.js","myscript.js"], 
     "all_frames":true 
    }], 
    "web_accessible_resources":[ 
     "toolbar.html", 
     "styles.css" 
    ] 
} 

Содержимый скрипт myscript.js

var url=chrome.extension.getURL('toolbar.html'); 
var height='35px'; 
var iframe="<iframe src='"+url+"' id='myCustomBar' style='height:"+height+"'></iframe>" 

$('html').append(iframe); 

$('body').css({ 
    'transform':'translateY('+height+')' 
}); 

Мои вопросы:

  1. Если я использую отдельное содержание сценария (Ответил здесь: access iframe content from a chrome's extension content script) для i кадр, какой должен быть URL-адрес?
  2. Есть ли другие способы доступа к DOM текущей вкладки из динамически вставляемого iframe?
  3. Предположим, мне нужно, чтобы это расширение выполнялось на всех URL-адресах, имеющих шаблон URL-адреса, например https://bitbucket.*.com, какими должны быть совпадения?

ответ

0
  1. Вы не можете использовать отдельный контент-скрипт для этого фрейма, так как ЦСИ для фрейма начинается с chrome-extensions://, не допускается вводить скрипты содержания в по умолчанию.

  2. Вы можете включать в себя тег сценария для toolbar.html, а затем использовать Window.postMessage сделать передачу сообщений между toolbar.js и родительским контентом сценариями.

  3. Согласно Match patterns, если '*' находится в хосте, это должен быть первый символ. Поэтому вы можете использовать что-то вроде https://*.com и проверить другие части вашего кода.