2013-03-12 5 views
2

Есть ли способ получить значение атрибута data-media, если я запускаю скрипт внутри содержимого iframe?получить значение атрибута родительского элемента из содержимого iframe

код выглядит следующим образом:

<div id="myDiv"> 
    <iframe data-create-resource-url="http://my.domain.url" 
     data-media="Song" 
     frameborder="0" 
     height="41" 
     src="https://different.domain.url" width="366"> 
    </iframe> 
</div> 

Я пробовал много способов уже как window.parent.document или top.document или window.parent и других доступных решений, но не похоже на работу.

ответ

5

Ну вы действительно не нужно, чтобы получить доступ к родителю. Когда вы запускаете скрипт внутри iframe. iframe в настоящее время является окном для вашего скрипта внутри iframe. Поэтому доступ к элементу окна должен дать вам упомянутый attr. Попробуйте это (не проверено):

alert($(window).attr('data-media')); 
+0

Спасибо за ответ! К сожалению, выход не определен. – MoMo

+0

Я тестировал его сейчас, и он должен работать. Посмотрите ссылку на скрипку в конце. Как вы можете видеть в исходном коде, на jsfiddle ваш код запускается в iframe со следующими атрибутами ''. Поэтому мой код 'alert ($ (window) .attr ('name'));' должен предупредить 'result' http://jsfiddle.net/DDcvN/ –

+0

Большое спасибо за помощь! – MoMo

1

ли вы пробовали это:

window.frameElement.getAttribute("data-media"); 
+0

спасибо за ответ. Попробуй это. – MoMo

+0

Получил ошибку: нельзя вызвать метод getAttribute из null. Я также использовал .attr() и получил ту же ошибку. – MoMo

+2

$ (window.frameElement) .data ('media'); работал на меня. –

0

Во-первых, добавить идентификатор или класс в IFrame элемент (например, как id='myframe')
Вы можете использовать JQuery, чтобы получить доступ к любому из атрибутов с:

var parent=window.parent.document.getElementById('#myframe'); 

Теперь просто получить атрибут (не проверено):

myAttr=$(parent).data("my-data-attribute") or 
myAttr=$(parent).attr("myelement") 
Смежные вопросы