我正在开发一个Chrome扩展程序,需要让我的内容脚本可以访问网页的所有框架,以便检测某些特定字段。
一旦检测到,我将尝试将该字段元素存储在全局对象的相应属性内。问题是,如果这些元素都位于不同的iframe中,每个iframe都会获得该脚本的副本,并填充其自己的对象副本而不是单个全局对象。
是否有一种方法可以拥有一个单一的全局对象实例,并在每次检测到字段时将值附加到其属性上?
例如:
原始对象
{
userName: [],
email: []
}
检测到 iframe1 中的 userName 字段。
{
userName: [<input id="username">...</input>],
email: []
}
检测到iframe2中的电子邮件字段。
{
userName: [],
email: [<input id="email">...</input>]
}
期望结果
{
userName: [<input id="username">...</input>],
email: [<input id="email">...</input>]
}
window.postMessage
实现嵌入式页面通信,但我不确定如何检测窗口是否嵌入在 DOM 中(iframe),以及父窗口应该如何处理这些消息,都在同一个content-script.js
文件中。 - Noam Suissa