2013-12-07 7 views
0

Хорошо, что мне нужно сделать, это довольно просто:Iframe доступ элементы с помощью JQuery/JavaScript

  • У меня есть веб-страницу работает внутри плавающем фрейме (в той же папке, локально - он не будет когда-либо запускался с сервера, вот и все, что есть)
  • Я хочу получить доступ к его элементам через javascript с начальной страницы.
  • При попытке что-то вроде $('iframe').contents(), через Chrome консоль JavaScript, я получаю предупреждение о том же происхождения и т.д.

Есть идеи? Это должно быть очень просто ...


P.S. Я не заинтересован в обходных путях, которые не включают в себя iframe - это имеет быть iframe ...

+0

@Vegard Хорошо, вы попробовали и получили его? –

+0

Использование Javascript для доступа к 'iframe's (или любому другому ресурсу) при использовании протокола' file: /// 'чревато с трудом. Это по соображениям безопасности. Самое простое решение - запустить локальный веб-сервер. – lonesomeday

+0

Каждый файл считается собственным доменом. Это не будет работать. См. Http://stackoverflow.com/questions/12587731/same-origin-policy-google-chrome-canvas-and-file-scheme –

ответ

2

(1)

Это потому, что веб-сайт вы загружаете в вашем IFRAME в другой домен, чем тот, в котором размещается сам iframe.

Смотреть это: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Same_origin_policy_for_JavaScript

Thusly, та же политика происхождения запретит Javascript для доступа/манипулировать страницу внутри фрейма.

(2)

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

Дополнительная информация: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe

Пожалуйста, проверьте, если ваша IFrame является песочнице?

(3)

Затем, есть заголовок ответа HTTP, X-Frame-Options, который может быть использован, чтобы указать, должен ли браузер быть разрешено отобразить страницу в фрейме. Сайты могут использовать это, чтобы избежать атак с помощью Clickjacking, гарантируя, что их контент не встроен в другие сайты. Он выглядит примерно так:

<meta http-equiv="X-FRAME-Options" content="SAMEORIGIN"> 

Значки здесь могут быть: deny, sameorigin или allow-from.

Дополнительная информация: https://developer.mozilla.org/en-US/docs/HTTP/X-Frame-Options

И: http://tools.ietf.org/html/rfc7034

Пожалуйста, проверьте, если ваша страница имеет такой заголовок?

(наконец):

Если все вышеперечисленное не применяются к вашему сценарию, то все должно работать. Пожалуйста, напишите больше информации, как разметка и ваш javascript.

+0

Ну, я не думаю, что вы прочитали мой первоначальный вопрос. Все, что у меня есть, скажем, 2 файла: 'index.html' и' index2.html', проживающие в той же (локальной) папке. 'index2.html' работает внутри iframe. Итак, какой другой домен? –

+0

@ Dr.Kameleon: Хорошо, я неправильно понял, я думал, что ваш сайт локальный. – Abhitalks

+0

Однако тайна все еще остается: почему хром жалуется на попытку доступа к междоменному доступу? –

Смежные вопросы