Невозможно внедрить скрипт содержимого в кросс-исходный iframe - PullRequest
0 голосов
/ 01 февраля 2019

Я создаю расширение Chrome для Gmail.Во всяком случае, я загрузил https://example.com страницу в расширение следующим образом.

  1. См. Фоновый скрипт в manifest.json
  2. В фоновом скрипте, внедренный скрипт содержимого и загружен html-файл расширения через "iframe"
  3. Внутри 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>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...