读取和操作来自不同域的父节点的ifame's文档对象模型

Read and manipulate ifame's document object model from the parent which is in different domain

本文关键字:ifame 对象模型 文档 父节点 读取 操作      更新时间:2023-09-26

我想实现一个页面,可以显示(嵌入)从一个完全不同的域,这是不在我的控制下的另一个页面。(比如www.google.com)。最终用户在父页面中填写url输入字段,然后父页面显示嵌入的内容。

到目前为止,这可能很容易,但是,父页必须能够读取和操作嵌入页的文档。没有什么花哨的,只是突出元素。我知道这会引起严重的安全问题。从子页读取的一些数据必须发送到我的服务器(与父页相同的域)

(请注意,尽管这个主题,这个应用程序将是完全合法的商业服务,与任何灰色或黑色的技巧或实践无关)

  • 这可能吗?
  • 如果最终用户安装了我的扩展(为完成任务而编写的一些辅助功能),并信任我作为发布者,这有帮助吗?
  • 如果以上都没有帮助,还有什么方法来完成指定的任务比这个iframe的想法?

编辑

(应用程序应该实现Chrome, FF和IE,我只是不能添加更多的标签超过5..)

一种选择是将DOM编辑移到应用程序的后端。

详细说明一下,我在一年前做了一个类似的项目,我们也希望能够突出显示页面上的文本部分。我们将HTML加载到后台的iframe中,使用一个模仿jQuery的库(在我们的示例中是pyquery),并对那里的DOM进行修改。在我们的例子中,这只是在文本周围添加跨度以突出显示。

这种方法的问题是你无法预测任意网站的DOM是什么样子的,所以应用程序会相当脆弱。即使是像在给定文本集周围放置span标记这样简单的事情也可能破坏页面。

它可以完成与Chrome扩展。基本思想是在父页面和嵌入页面中注入内容脚本,这将允许您与页面的内容进行交互。然后,通过chrome.runtime API,您将使用背景页在两个页面之间传递信息。