在iframe本身内另一页延长一个iframe(Lengthening an iframe from

2019-10-20 04:19发布

我目前正在为学校的网站,我很缺乏经验。
我遇到的问题是:

我有一个网页,我想使长取决于链接点击的iframe。
这部分很简单,有什么不但是iframe 的链接上单击后作出的iframe更长。

所以,我有我做了一个外部脚本

function getObj(name)
{
  if (document.getElementById)
  {
    this.obj = document.getElementById(name);
    this.style = document.getElementById(name).style;
  }
  else if (document.all)
  {
    this.obj = document.all[name];
    this.style = document.all[name].style;
  }
  else if (document.layers)
  {
    this.obj = document.layers[name];
    this.style = document.layers[name];
  }
}

var frame, div1;  
function mainInit(){
  frame = new getObj("idFrame");
}

function init2(){
     div1 = new getObj("divWithTable");
     div1.style.visibility = "hidden";
}

function ShowDiv(){
  div1.style.visibility = "visible";
  //frame.obj.height = 1000;
}

所以我有一个<body onload="mainInit()">在我的主页和<body onload="init2()">页面上的iframe中,其中也有一个按钮,一个内onclick="ShowDiv()"

有什么问题,现在是:
我不能改变iframe的长度,当我点击一个按钮,显示在它的网页div。 我需要以某种方式从第一页返回定义的iframe,所以我可以用它在第二。

Answer 1:

只要你在同一起源,你应该能够访问链接和附加功能给他们。 :)

// Find the iframe (in this case by it's tag <iframe>)
var iframe = document.getElementsByTagName('iframe')[0];
// Get the content of the iframe
// The || means or, this is to account for the way different browser allow access to iframe content
// If you cant get the contentDocument, then it'll give you the contentWindow.document 
var iframeContent = iframe.contentDocument || iframe.contentWindow.document;

// Finally we get the link elements from the iframe
// In this example all of our links have the class 'my-link', but you could get by tag name <a> (in the same way we got the iframe)
var iframeLinks = iframeContent.getElementsByClassName('my-link');

// Then add your listeners to the links

如果运行这个地方你需要一个虚拟服务器。 有很多在那里,是很容易运行。 :)



Answer 2:

不幸的是这不是能够iframe中截取的点击除非iframe的位置是相同的域中包含文档。

这里有一个JQuery的解决方案,如果您将使用相同的域: 添加点击事件的iframe

但是,您可以检查iframe的位置时,它的变化和运行代码来改变iframe的大小。

最支持的方式这样做是把一个onload属性的iframe中。

<iframe onLoad="runSomeCode()"></iframe>

其他方式:

document.getElementsByTagName('iframe')[0].onload = function() {
    // Do some stuff
}

几个iframe的onload事件的例子在这里: IFRAME SRC变化事件检测?



文章来源: Lengthening an iframe from another page within the iframe itself