【问题标题】:Dynamically created iframe on button press vanishes immediately on all browsers按下按钮时动态创建的 iframe 在所有浏览器上立即消失
【发布时间】:2018-07-14 06:08:51
【问题描述】:

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

一些半相关的上下文:我发现我可以直接访问我的大学时间表,而无需通过登录过程,然后将 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>

一旦按下按钮,框架就会存在一两分钟,然后消失。完全,&lt;div&gt; 内部没有任何痕迹,控制台也没有消息。

作为控件,只需在 HTML 正文中添加带有 URL 的 &lt;iframe&gt; 就可以了。

其次,如前所述,document.write('&lt;iframe src=iurl&gt;&lt;/iframe&gt;') 而不是 divelmnt.appendChild 也可以正常工作,只是由于隐含的 document.open 调用,它会清除页面的其余部分,我想保留其余部分东西。

作为参考,“ifgh”是“iframe 到这里”。现在是凌晨 3 点,这是我能做的最好的事情。 此外,我将按照divelmnt.removeChild(ifrm) 的方式添加一个子删除 sn-p,因此一旦这一切正常,我就不会获得多个 iframe

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

不确定从哪里开始,我已经没有想法了。谢谢你,我很抱歉格式不好,如果有什么不清楚的地方,请告诉我,我醒来后会尽力解决这个问题

【问题讨论】:

    标签: javascript html iframe cross-browser


    【解决方案1】:

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

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

    或者,如果您没有地方可以提交,只需删除表单即可。

    【讨论】:

    • 谢谢!我在某处读到过一个常见错误,即人们导致页面重新加载,但我终其一生都无法弄清楚 为什么 会重新加载。我还发现由于某种原因我不需要删除以前添加的子元素,我假设由于它具有相同的 ID,它只是覆盖了旧元素?
    猜你喜欢
    • 2018-08-02
    • 1970-01-01
    • 2015-01-06
    • 2021-01-06
    • 2021-04-13
    • 1970-01-01
    • 2015-05-09
    • 2010-09-12
    • 2013-09-14
    相关资源
    最近更新 更多