2015-01-02 4 views
2

Привет Я создаю расширение chrome, в которое я вставляю iframe на некоторые страницы. В функции onload iframe я пытаюсь получить доступ к элементам внутри iframe с помощью JQuery.Доступ к iframe, введенному расширением chrome с помощью JQuery

$("#divInside-iframe",iframeDocument) 

При попытке сделать это я получаю сообщение об ошибке:

Uncaught SecurityError: Не удалось выполнить «addEventListener» на «EventTarget»: Запрещенные кадр с началом «http://www.whateverpage.com» от доступа кадр с началом " хром-расширение: // meehnkofmafeb ******». Запрос доступа к кадру имеет протокол «http», к кадру, к которому обращаются, имеет протокол «chrome-extension». Протоколы должны совпадать.

Интересно, эта ошибка возникает при первом попытке получить доступ к чему-либо внутри iframe. Это не произойдет в последующих вызовах, если только я не получаю доступ к чему-либо из обычного шаблона страницы между ними. После чего ошибка повторяется один раз снова.

Что-то, как смешно, как

try{ 
    $("#divInside-iframe",iframeDocument) 
}catch(error){ 
    $("#divInside-iframe",iframeDocument) 
} 

работает как путь вокруг!

Также обратите внимание, что ошибка находится в сильной части кода JQuery.

Проверено с Jquery 2.1.3 и 1.11.1

ответ

0

Ну это зависит от содержания загружаемой в плавающем фрейме. При загрузке содержимого из того же хоста, то он может быть сделан как следовать

<!doctype html> 
<html lang="en"> 
<head> 
    <meta charset="utf-8"> 
    <title>contents demo</title> 
    <script src="//code.jquery.com/jquery-1.10.2.js"></script> 
</head> 
<body> 

<iframe src="//api.jquery.com/" width="80%" height="600" id="frameDemo"></iframe> 

<script> 
$("#frameDemo").contents().find("a").css("background-color", "#BADA55"); 
</script> 

</body> 
</html> 

я не уверен, если содержание загруженное с сайта третьей стороны. Я надеюсь, что это поможет вам

+0

Я загружаю содержимое расширения. Что-то вроде ['(myiFrame.src = chrome.extension.getURL ('/ pages/index.html')']; – insanevirus

+0

, пожалуйста, проверьте мое редактируемое объяснение в вопросе – insanevirus