【问题标题】:Accessing "pre" tag in an iframe loading a page from different domain在从不同域加载页面的 iframe 中访问“pre”标签
【发布时间】:2012-12-21 16:41:52
【问题描述】:

我正在尝试将页面加载到 iframe 中。加载该页面时,我希望编辑加载文档内的“pre”标签的内容。加载的文档来自另一个域。我正在使用:resultframe 是 iframe

var atag= document.getElementById("resultframe").contentWindow.document.getElementsByTagName('pre');
 atag[0].innerHTML="done";

访问标签。

问题:这句话似乎没有效果。我需要知道正确的语法,并且我可以访问从不同域加载的页面元素。我从网上获得了语法以及它的一些变体。 请提出建议。

【问题讨论】:

  • 你不能。 Javascript 具有跨域策略,它也适用于具有跨域内容的 iFrame,因此您无法更改在该 iframe 中加载的其他网站。

标签: javascript iframe


【解决方案1】:

虽然 JavaScript 受到阻止与另一个域交互的跨域策略的限制,但只要您能忍受某些限制,就有一种潜在的解决方法。

通过使用类似 PHP and it's cURL library 的东西,您几乎可以从任何地方获取页面的内容(即使是安全页面或需要登录的页面,只要您有凭据)。然后,您可以解析页面,编辑您需要的内容,并将其显示在您自己的站点中。不过,重要的是要意识到,这只是您自己的页面本地副本。您将无法实际更改页面本身的内容。

另一种可能需要访问您希望编辑的所有域的权限,即使用web service 以 PUT 请求的形式接受编辑。您可以使用 Web 服务实现更多功能,但它必须在您希望对其进行更改的所有目标域上可用。

在不久的将来,XMLHttpRequest Level 2 可能会成为现实,并将带来跨域资源共享 (CORS)。 CORS 将允许一个域上的 Web 应用程序向另一个域发出跨域 AJAX 请求。目标域将有一个标头,明确允许来自另一个域的请求。这可能会用于将编辑内容发送到另一个站点。

【讨论】:

    【解决方案2】:

    你不能。出于安全原因,浏览器具有跨域策略。

    如果我将 facebook 页面包含在 iframe 中,我可以获取您的所有信息,因为您始终与它相关联?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-24
      • 1970-01-01
      • 2014-05-20
      • 1970-01-01
      • 1970-01-01
      • 2020-10-01
      • 2018-02-25
      • 1970-01-01
      相关资源
      最近更新 更多