按下按钮时动态创建的 iframe 在所有浏览器上立即消失
Dynamically created iframe on button press vanishes immediately on all browsers
我是这方面的新手,所以我可能犯了一个简单的错误,但到目前为止搜索对我没有帮助。
一些半相关的上下文:我发现我可以直接访问我的大学时间table,而无需通过登录过程然后将 Blackboard 导航到时间table 页面。我通过随机打字错误和 Chrome 的多功能框自动填充功能发现它可以访问,因为它是自己的页面,我可以操纵显示的日期范围和星期以及我想通过 [=57= 中的数据显示哪个学生 ID ].
尽管这 可能 是一个安全漏洞,但我正试图利用它来让查看我的时间 table 更容易(在移动设备上查看它很痛苦,因为它被压缩成另一页的中间),所以我制作了一个页面,该页面从表单元素(学号和周数)中获取一些信息,从中制作一个完整的 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>
内部的痕迹,控制台也没有任何消息。
作为对照,只需将 <iframe>
和 URL 写入到 HTML 的正文中就可以了。
其次,如前所述,document.write('<iframe src=iurl></iframe>')
而不是 divelmnt.appendChild
也工作得很好,只是由于隐式 document.open
调用它清除了页面的其余部分,我想保留其余的东西。
供参考,"ifgh" 为 "iframe goes here"。现在是凌晨 3 点,这是我能做的最好的事情。
此外,我将按照 divelmnt.removeChild(ifrm)
添加一个子删除代码段,这样一旦一切正常,我就不会获得多个 iframe
我已经在 Chrome、IE、Edge 和一个非常旧的 firefox 版本中测试了这个,我碰巧有安装程序。
不确定从这里去哪里,我 运行 没有想法。谢谢,对于格式不正确,我深表歉意,如果有任何不清楚的地方,请告诉我,我会在醒来时尽力解决这个问题
表单中的 button
元素必须具有 type="button"
属性。否则它只是提交表单并重新加载页面。默认为 type="submit"
.
<form method="POST">
<button type="button" onclick="refreshIframe();">Get timetable</button>
</form>
或者,如果您没有任何地方可以提交,只需删除表单即可。
我是这方面的新手,所以我可能犯了一个简单的错误,但到目前为止搜索对我没有帮助。
一些半相关的上下文:我发现我可以直接访问我的大学时间table,而无需通过登录过程然后将 Blackboard 导航到时间table 页面。我通过随机打字错误和 Chrome 的多功能框自动填充功能发现它可以访问,因为它是自己的页面,我可以操纵显示的日期范围和星期以及我想通过 [=57= 中的数据显示哪个学生 ID ]. 尽管这 可能 是一个安全漏洞,但我正试图利用它来让查看我的时间 table 更容易(在移动设备上查看它很痛苦,因为它被压缩成另一页的中间),所以我制作了一个页面,该页面从表单元素(学号和周数)中获取一些信息,从中制作一个完整的 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>
内部的痕迹,控制台也没有任何消息。
作为对照,只需将 <iframe>
和 URL 写入到 HTML 的正文中就可以了。
其次,如前所述,document.write('<iframe src=iurl></iframe>')
而不是 divelmnt.appendChild
也工作得很好,只是由于隐式 document.open
调用它清除了页面的其余部分,我想保留其余的东西。
供参考,"ifgh" 为 "iframe goes here"。现在是凌晨 3 点,这是我能做的最好的事情。
此外,我将按照 divelmnt.removeChild(ifrm)
添加一个子删除代码段,这样一旦一切正常,我就不会获得多个 iframe
我已经在 Chrome、IE、Edge 和一个非常旧的 firefox 版本中测试了这个,我碰巧有安装程序。
不确定从这里去哪里,我 运行 没有想法。谢谢,对于格式不正确,我深表歉意,如果有任何不清楚的地方,请告诉我,我会在醒来时尽力解决这个问题
表单中的 button
元素必须具有 type="button"
属性。否则它只是提交表单并重新加载页面。默认为 type="submit"
.
<form method="POST">
<button type="button" onclick="refreshIframe();">Get timetable</button>
</form>
或者,如果您没有任何地方可以提交,只需删除表单即可。