2015-06-29 4 views
0

У меня есть iframe с атрибутом custom data-*, который принимает значение параметра в моем теге select. Я пытаюсь получить значение этого data-id в форме, которая отображается в iframe, ссылаясь на этот атрибут iframe.Получить значение атрибута iframe изнутри Что iframe

EDIT: Мой IFrame является и оригинальный DOM находятся на том же домене

Моя форма:

<select id="option-dropdown"> 
    <option value="opt-1">Option 1</option> 
    <option value="opt-2">Option 2</option> 
</select> 

Script тянуть вариант выбран:

var optionSelected = $('#option-dropdown').val(); 

И вот мой iframe объявляется с идентификатором данных:

'<iframe id="edit-iframe" data-id="' + optionSelected + '" src="/somePage + '"></iframe>' 

И, наконец, моя форма, которая отображается внутри iframe. Может ли эта форма получить ссылку на iframe's data-id?

<form action="/someAction" method="post> 
    <input id="input-1" value="optionSelected"/> 
    <input id="input-2" value="someOtherValue"/> 
    <button id="save" >Save</button> 
</form> 

ответ

1

Нет, это было бы cross site scripting.

В основном javascript из одного домена не может получить доступ к другому домену без всяких потенциальных проблем, поэтому он блокируется браузерами.

Единственный способ, которым вы могли бы это сделать, - это иметь как источник, так и цель и убедиться, что они находятся в одном домене, и в этом случае вам, вероятно, не понадобится IFrame.

1

window.opener. , например, внутри фрейма: window.opener.document.getElementById('edit-iframe').getAttribute('data-id')

(конечно, при условии, обе страницы находятся на том же домене)

0

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

var optionSelected = window.frameElement.getAttribute("data-id"); 

Хотя я согласен с @Toni ли на то, что я, вероятно, не нужен IFRAME в первую очередь, но на данный момент выше метод будет делать хорошо.

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