Сценарии с расширением Chrome и iframe - PullRequest
11 голосов
/ 04 июля 2011

Я пытаюсь создать расширение для Google Chrome, которое выполняет следующие действия:

Запускать при загрузке www.example.com example.com имеет iframe для другого сайта, мне нужно получить доступ кссылка из этого iframe (это Rapidshare, мне нужно захватить ссылку для скачивания)

Пока все хорошо, но ..

Тогда мне нужно расширение, чтобы сообщить URL ссылки на example.comдля дальнейшей обработки.

Любые идеи или указания ??

Я прочитал http://code.google.com/chrome/extensions/content_scripts.html#host-page-communication, но не могу заставить его работать ...

Ответы [ 2 ]

37 голосов
/ 04 июля 2011

Вам необходимо внедрить 2 скрипта контента:

"content_scripts": [
    {
      "matches": ["http://www.example.com/*"],
      "js": ["example.js"]
    },{
      "matches": ["http://www.rapidshare.com/*"],
      "all_frames": true,
      "js": ["rapidshare.js"]
    }
]

Чтобы перенести ссылку с одного скрипта на другой, вам необходимо связаться через фоновую страницу:

rapidshare.js:

chrome.extension.sendRequest({url: "link"});

background.js:

chrome.extension.onRequest.addListener(function(request, sender, sendResponse) {
    chrome.tabs.sendRequest(sender.tab.id, request);
    sendResponse({});
});

example.js:

chrome.extension.onRequest.addListener(function(request, sender, sendResponse) {
    console.log("received url:", request.url);
    sendResponse({});
});
2 голосов
/ 16 марта 2018

iframe - это отдельный документ для браузера, поэтому вы можете использовать расширение chrome и интегрировать его непосредственно в iframe. Вам нужно просто указать URL-адрес iframe в файле манифеста расширения Chrome. Мы используем интеграцию некоторых меню и панелей инструментов наших расширений Chrome в iframes. Это работает.

Есть хорошая статья в качестве дополнительной информации для расширений Chrome и iFrames http://www.natewillard.com/blog/chrome/javascript/iframes/2015/10/20/chrome-communication/

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