访问iframe内容(在firefox插件javascript中)

时间:2013-07-18 09:59:22

标签: javascript iframe firefox-addon xul

我正在编写一个在网页中打开iframe的firefox插件。我想在iframe中选择对象,但我无法访问内容:

var iframe = content.document.getElementById("MyBeautifulIframe");
if (iframe)
{
  var mydiv = iframe.contentDocument.getElementById("mydiv");
}
  

Erreur:TypeError:iframe.contentDocument未定义

我尝试使用iframe.content.document.getElemen ...,iframe.document.getElemen ...同样的结果。

如何访问iframe dom?如果我看iframe var类型,它的 [object XrayWrapper [object XULElement]] ,如何访问XULElement对象的dom对象?

1 个答案:

答案 0 :(得分:1)

更新回答:

看看你的代码,我想我可能已经找到了你的问题。

你在做:

var iframe = content.document.getElementById("muzich_iframe_addcontainer");
if (iframe)
{
  if (iframe.contentDocument.getElementById("div"))
  {
    this.close_all();
  }
}

muzich_iframe_addcontainer是一个div,而不是iframe,所以它永远不会有contentDocument。 此外,我无法通过创建xul元素使其工作。我必须创建html div和iframe才能使它工作。

以下是代码:

var htmlns = "http://www.w3.org/1999/xhtml";
var container = document.createElementNS(htmlns,'div');
container.setAttribute("id", "muzich_iframe_addcontainer");
container.setAttribute("style", styleContainer); //styleContainer is the one you use without the background stuff
window.content.document.body.appendChild(container);

var iframe = document.createElementNS(htmlns,'iframe');
iframe.setAttribute("id", "muzich_iframe");
iframe.setAttribute("style",
    "width: 100%; height: 100%; "
);

iframe.setAttribute("src", "http://www.lifehacker.com"); // Used it as my example url
window.content.document.getElementById("muzich_iframe_addcontainer").appendChild(iframe);

然后,当您想要关闭时,请执行以下操作:

var iframe = window.content.document.getElementById("muzich_iframe");
if (iframe)
{
  if (iframe.contentDocument.getElementById("div"))
  {
    this.close_all();
  }
}

希望这个能为你解决。