【发布时间】:2022-01-17 10:59:56
【问题描述】:
我有一种情况,我需要知道代码是从哪个 iframe 实例运行的。 “父”文档本身是由代码生成的,我无法访问生成它的机制(并且它会定期重新生成)。我的文档在页面上的多个 iframe 中被加载不止一次,位于不同的位置(iframe 不是兄弟)。我希望脚本的每个实例都能够访问加载该脚本实例的 iframe NODE。
这是一个粗略的想法。对于每个“a.html”的运行代码,我希望它知道它正在运行的 iframe ELEMENT。
在此示例中,将有三个从“a.html”运行的相同代码实例。我希望能够查看父文档(我可以——这不是跨域问题)并找出 iframe 的 ID 或其他一些动态分配的属性——所以我需要 iframe 本身的 ELEMENT 引用.
请求 iframe 的“父”元素不会通知父 javascript 实例哪个元素正在执行该请求 AFAIK。有吗?
我不能只迭代所有 iframe 并查找我的页面已知来源“a.html”,因为同一路径的多个实例以及与我无关的其他 iframe - IFRAME 是当前执行上下文?
我不能做的事:
- 修改父页面
- 修改 iframe 网址,包括名称或使用搜索参数
- 在 iframe 上指定 id 或数据集值。
我能做的事:
- 修改子 iframe 的内容
我目前唯一的方法是让“a.html”生成一个(希望如此)唯一值并将其存储在文档中,然后要求父上下文迭代所有 iframe 并在子上下文中查找该值,那么当它匹配时,就会有正在调用请求的节点。
想法?
【问题讨论】:
-
节点的本质是非常模糊的。它是一个元素吗?文本?它是如何突然生成的?通过函数?事件?您正在寻找的这个值到底是什么?数组?目的?数字?字符串?
-
node是加载了a.html实例的iframeelement。一个自动化的外部进程根据外部事件生成引用a.html的文件。当我在a.html中运行的脚本知道加载a.html实例的iframe 是什么时,它将从该iframe element中读取一个属性(它的id或其数据集集合中的一个值),然后使用在a.html内运行的脚本中的那个值来处理。a.html可能多次嵌入同一页面,每个iframe将有不同的 id,并在每个实例上运行。
标签: javascript html iframe