$ ( "# IframeID") contentWindow.FunctionFromIFrameNode().
это ошибка, но она работает, когда определяет индекс элемента следующим образом
$ ( "# IframeID") [0].contentWindow.FunctionFromIFrameNode();
Может ли кто-нибудь объяснить внутреннее?
Я предполагаю, что вы используете jQuery. $
- это фабричная функция, которая возвращает набор элементов DOM, которые соответствуют переданному ему селектору ($
можно вызывать другими способами). jQuery определяет очень полезные методы для этого возвращаемого объекта. contents()
является одним из таких. Даже если только один элемент соответствует селектору в документе, $
still возвращает объект со значением свойства 0
ссылкой на выбранный элемент DOM.
Возвращенный объект jQuery выглядит так:
var returnedObject = {
0: DOM element,
1: DOM element,
length: 2,
selector: "Selector passed to $",
context: 2nd argument passed to $ or Document object
}
Вы можете ссылаться на первый элемент DOM, например, с помощью метода returnedObject[0].
$('#iframeID')
возвращает набор элементов DOM, который соответствует селектору. Возвращаемый набор представляет собой объект, подобный массиву, который имеет свойства индекса, такие как массивы (0
, 1
,....).
$("#iframeID").contentWindow.FunctionFromIFrameNode()
Это не сработает, потому что вы пытаетесь получить доступ к contentWindow
, которое не определено в наборе элементов DOM, возвращаемых значением $
.
$("#iframeID")[0].contentWindow.FunctionFromIFrameNode()
Это будет работать, потому что вы получаете доступ к первому элементу DOM в наборе элементов DOM, возвращаемых значением $
. Этот элемент DOM имеет на contentWindow
определенный contentWindow
.
$(#iframeID").contents().find("p").html()
работает, потому чтоcontents()
является одним из многих методов, определенных в возвращенном объекте jQuery.