如何从<iframe>中获得<div> ?
当前回答
window.parent.document.getElementById("framekit").contentWindow.CallYourFunction('pass your value')
CallYourFunction()是页面内部的函数和它上面的函数动作
其他回答
其他的答案都对我不起作用。我最终在我的iframe中创建了一个函数,返回我正在寻找的对象:
function getElementWithinIframe() {
return document.getElementById('copy-sheet-form');
}
然后像这样调用该函数来检索元素:
var el = document.getElementById("iframeId").contentWindow.functionNameToCall();
window.parent.document.getElementById("framekit").contentWindow.CallYourFunction('pass your value')
CallYourFunction()是页面内部的函数和它上面的函数动作
下面的代码将帮助您找到iframe数据。
let iframe = document.getElementById('frameId');
let innerDoc = iframe.contentDocument || iframe.contentWindow.document;
以上答案给出了使用Javscript的很好的解决方案。 下面是一个简单的jQuery解决方案:
$('#iframeId').contents().find('div')
这里的技巧是jQuery的.contents()方法,不像.children()只能获取HTML元素,.contents()可以同时获取文本节点和HTML元素。这就是为什么可以使用iframe来获取文档内容的原因。
关于jQuery .contents()的进一步阅读:.contents()
注意,iframe和page必须在同一个域中。
你可以使用这个函数来查询页面上的任何元素,不管它是否嵌套在一个iframe(或多个iframe)中:
function querySelectorAllInIframes(selector) {
let elements = [];
const recurse = (contentWindow = window) => {
const iframes = contentWindow.document.body.querySelectorAll('iframe');
iframes.forEach(iframe => recurse(iframe.contentWindow));
elements = elements.concat(contentWindow.document.body.querySelectorAll(selector));
}
recurse();
return elements;
};
querySelectorAllInIframes('#elementToBeFound');
注意:请记住,页面上的每个iframe都必须是同源的,否则该函数将抛出错误。
推荐文章
- 如何使用Jest测试对象键和值是否相等?
- 将长模板文字行换行为多行,而无需在字符串中创建新行
- 如何在JavaScript中映射/减少/过滤一个集?
- 如何嵌入HTML到IPython输出?
- 如何删除/忽略:悬停css风格的触摸设备
- Bower: ENOGIT Git未安装或不在PATH中
- HTML5文本区域占位符不出现
- 添加javascript选项选择
- 在Node.js中克隆对象
- HTML tabindex属性是什么?
- 为什么在JavaScript的Date构造函数中month参数的范围从0到11 ?
- HTML按钮调用MVC控制器和动作方法
- 使用JavaScript更改URL参数并指定默认值
- 在window.setTimeout()发生之前取消/终止
- 如何删除未定义和空值从一个对象使用lodash?