Я создаю расширение Chrome для Gmail.Во всяком случае, я загрузил https://example.com страницу в расширение следующим образом.
- См. Фоновый скрипт в manifest.json
- В фоновом скрипте, внедренный скрипт содержимого и загружен html-файл расширения через "iframe"
- Внутри html-файла я загрузил«iframe» для https://example.com
До сих пор содержимое загружается и работает нормально.
Теперь я хочу получить идентификатор потока или некоторые идентификаторы, связанные с dom, из верхнего фрейма (то есть Gmailосновной документ)
Я пытаюсь внедрить другой сценарий содержимого в окно iframe перекрестного происхождения (т.е. окно iframe example.com), но я не уверен, как это сделать?
Манифест Json:
{
"name": "gmailext12",
"version": "1.0.0",
"manifest_version": 2,
"description": "gmailext12",
"icons": {
"16": "images/16.png",
"128": "images/128.png"
},
"background" : {
"scripts" : ["scripts/background.js"]
},
"browser_action": {
"default_icon": "images/16.png"
},
"permissions": [
"activeTab",
"tabs",
"identity",
"https://*.google.com/*",
"https://ssl.gstatic.com/",
"https://www.googleapis.com/",
"https://accounts.google.com/"
],
"web_accessible_resources": [
"iframe.html"
]
}
Фоновые Js:
chrome.browserAction.onClicked.addListener(function(tab) {
chrome.tabs.executeScript({file: "scripts/content.js"});
});
Сценарий содержимого:
var element = document.getElementById('gmail-123');
if (typeof(element) != 'undefined' && element != null)
{
document.getElementById("gmail-123").remove();
}
var extensionOrigin = 'chrome-extension://' + chrome.runtime.id;
if (!location.ancestorOrigins.contains(extensionOrigin)) {
var iframe = document.createElement('iframe');
// Must be declared at web_accessible_resources in manifest.json
iframe.id = 'gmail-123';
iframe.src = chrome.runtime.getURL('iframe.html');
document.body.appendChild(iframe);
}
Iframe Html:
<html>
<body>
<iframe id="gmail-111" src="https:example.com"></iframe>
</body>
</html>