按钮按下时动态创建的iframe会立即在所有浏览器上消失

时间:2018-02-04 04:30:56

标签: javascript html iframe cross-browser

我是这个东西的新手所以我可能犯了一个简单的错误,但到目前为止搜索并没有帮助我。

一些半相关的背景:我发现我可以直接访问我的大学时间表,而无需经过登录过程,然后将Blackboard导航到时间表页面。我通过一个随机的拼写错误和Chrome的多功能框自动填充发现它可以访问它自己的页面,我可以操作显示的日期范围和周,以及我想通过URL中的数据显示哪个学生ID。 尽管这可能可能是一个安全漏洞,但我正试图利用它来更轻松地查看我的时间表(在移动设备上查看它是很痛苦的,它被挤压到另一页的中间),所以我创建了一个页面,从表单元素(学号和周数)中获取一些信息,从中创建一个完整的URL并创建一个带有该URL的iframe。

反正;我已经确定表单输入不是问题,因为简单地使用document.write()和iframe HTML对象,生成的URL工作得很好(但是具有该特定方法的其他问题)。

此外,让javascript通过相同的方法简单地生成我自己的基本URL,但地址中没有变量仍然存在问题。

如何按下按钮创建iframe:

var divelmnt = document.getElementById("ifgh");
var ifrm=document.createElement("iframe");
ifrm.setAttribute("id", "tableframe");
ifrm.setAttribute("width", "80%");
ifrm.setAttribute("height", "80%");


function refreshIframe() {
	var iurl ='http://isittuesday.tk';

	ifrm.setAttribute("src", iurl);
	divelmnt.appendChild(ifrm);
<form method="POST">
	<button onclick="refreshIframe();">Get timetable</button>
</form>
<br>
<div id="ifgh">
</div>

按下按钮后,框架会存在一两个小时,但随后会消失。完全没有<div>内部的跟踪,控制台没有消息。

作为一个控件,只需添加一个带有写入HTML正文的URL的<iframe>就可以了。

其次,如前所述,document.write('<iframe src=iurl></iframe>')代替divelmnt.appendChild也可以完美地运行,除非由于隐式document.open调用而清除页面的其余部分,我会喜欢保留剩下的东西。

作为参考,“ifgh”是“iframe到这里”。凌晨3点,这是我能做的最好的事情。 另外,我会在divelmnt.removeChild(ifrm)的行中添加一个子移除代码段,因此一旦这一切都有效,我就不会获得多个iframe

我已经在Chrome,IE,Edge和一个极其旧版本的Firefox中测试了这个,我碰巧有安装程序。

不确定从哪里开始,我已经没有想法了。谢谢你,我对格式不佳表示歉意,如果有什么不清楚,请告诉我,当我醒来时,我会尽力解决这个问题

1 个答案:

答案 0 :(得分:1)

表单中的button元素必须具有type="button"属性。否则它只是提交表单并重新加载页面。默认值为type="submit"

<form method="POST">
  <button type="button" onclick="refreshIframe();">Get timetable</button>
</form>

或者,如果您没有任何地方可以提交,请删除该表单。