2013-10-24 4 views
0

Как вы можете выбрать iframe DOM Object на странице, если вы знаете идентификатор iframe? Предположим, что на странице может быть несколько iframe, и вы не знаете позицию того, о котором идет речь, а также никаких решений jQuery. Я придумал следующее, однако, я ожидаю, что это может быть намного более тривиально.Получить iframe данного ID

EDIT. Я пытаюсь получить объект DOM, так что я могу получить доступ к свойствам, такие как window.frames[0].innerHeight

function getIframe(id) { 
    var iframe=null; 
    for (var i = window.frames.length - 1; i >= 0; i--) { 
     if(window.frames[i].frameElement.id==id){iframe=window.frames[i];break;} 
    } 
    return iframe; 
} 
+0

@RGraham Что вы имеете в виду? – user1032531

+0

Я ищу объект, представляющий iframe. Например, 'window.frames [0]' вернет объект для первого iframe на странице. 'document.getElementById (" myIFrame ")' и 'window.frames ['myIFrame']' с другой стороны, вернет HTML-код iframe. Извините, если в моем описании используется неправильная номенклатура, так как iframe все еще новы для меня. Спасибо – user1032531

ответ

1

Смотрите этот ответ:

Access iframe elements in JavaScript

window.frames['myIFrame'] 

EDIT:

I сделал несколько тестов на FF и Chrome и придумал следующие выводы.

window.frames["myFrame"] возвращается:

`[object HTMLIFrameElement]` when on FF (v24) 
    `[object Window]` when on Chrome (v 30.0.1599.101) 

мы можем сделать управление как это для HTMLIFrameElement собственности contentWindow добиться от IFrame Window:

var myFrame = (window.frames["myFrame"].contentWindow ? window.frames["myFrame"].contentWindow : window.frames["myFrame"]) 

Таким образом, в переменной myFrame хранится Window объект.

Если теперь мы хотим получить DOM элемент HTMLIFrameElement мы можем просто сделать:

var domElement = myFrame.frameElement 

Надеется, что это будет полезно.

+0

Это то же самое, что 'document.getElementById (" myIFrame ")'. Я пытаюсь получить объект DOM. Извините за неясность. – user1032531

+0

Возможно, мне что-то не хватает, но разве это не показывает innerHeight как неопределенный в вашем примере? Пожалуйста, см. Http://jsfiddle.net/VQ5ar/2/ – user1032531

+0

@ user1032531 Извините, проверено только в Chrome ... проверьте это, здесь у вас есть объект DOM [http://jsfiddle.net/VQ5ar/4/](http : //jsfiddle.net/VQ5ar/4/). Он работает в Chrome и Firefox, IE не тестировался. Более подробную информацию о HTMLIFrameElement см. В [https://developer.mozilla.org/en/docs/Web/API/HTMLIFrameElement](https://developer.mozilla.org/en/docs/Web/API/HTMLIFrameElement) – Jonathan

0
var el = document.querySelector('#test'); 

var matches = el.querySelectorAll('iframe'); 

ЧИТАТЬ: http://slides.html5rocks.com/#new-selectors

+0

Возвращает список узлов iframe. Как получить конкретный объект iframe с идентификатором? Кроме того, мне нужно обернуть #test вокруг всех потенциальных iframe? – user1032531

+0

вы можете использовать querySelector ("# idOfmyFrame"); –

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