Я работаю над расширением Chrome, которое собирает медийные объявления, размещаемые на веб-сайте для исследования.Я пытаюсь получить доступ к рекламному HTML через jquery следующим образом:
chrome.runtime.onMessage.addListener(function(request, sender, sendResponse){
if(request.todo == "CaptureAds"){
frames = $('iframe')
for(var iter=0;iter<frames.length;iter++){
console.log('==================IFRAME====================')
console.log('A')
console.log(frames[iter])
console.log('B')
console.log(frames[iter].contentDocument)
console.log('C')
console.log(frames[iter].src)
}
}
});
Это дает мне следующий результат:
Перекрестныйисходный iframe, который я могу напечатать, но не могу получить доступ к html:
Два обычных iframe, которые я могу распечатать и получить доступ к их html
Iпосмотрел несколько вопросов о stackoverflow, и они привели к методу postMessage.В моем случае у меня нет прав на редактирование в iframe, поэтому я не могу общаться между двумя iframe, как предлагается в этих решениях.Может кто-нибудь, пожалуйста, предложить способ обойти политику того же происхождения в этом случае, не связываясь с настройками браузера.
Вот мой манифест:
{
"manifest_version": 2,
"name": "xyz",
"version": "1.0",
"description": "abc",
"icons": {
"16": "images/get_started16.png",
"32": "images/get_started32.png",
"48": "images/get_started48.png",
"128": "images/get_started128.png"
},
"page_action": {
"default_icon": "images/get_started16.png",
"default_popup" : "popup.html",
"default_title": "example"
},
"background": {
"scripts": ["eventPage.js"],
"persistent": false
},
"content_scripts": [
{
"matches": ["https://www.example.com/*"],
"js": ["content.js", "jquery-3.3.1.min.js"],
"all_frames": true
}
],
"permissions": ["activeTab","https://www.example.com/*","webNavigation"]
}