我正在尝试在我的网页中插入一个位于外部网页的表单。
我没有这个表单的直接网址,所以我试图以这种方式导航框架:
function showForm() {
var newIframe = document.createElement('iframe');
newIframe.width = '800'; newIframe.height = '400';
newIframe.src = "websiteURL"
document.body.appendChild(newIframe);
window.frames["iframe"].document.getElementById('HM_Item1_4_1_1').click();
}
但是从控制台我得到了:
Uncaught TypeError: Cannot read property 'iframe' of undefined
已加载外部网站的主页,但重定向无效。
答案 0 :(得分:2)
您正试图获得window.frames["iframe"]
...但您创建的iframe根本没有name
或id
,更不用说匹配"iframe"
。
无论如何,搜索iframe的帧集是毫无意义的。
您已在newIframe
变量中对其进行了引用!
只需将window.frames["iframe"]
替换为newIframe
。
修复后,您的下一个问题是document
is the wrong property to access。
修复后,您的下一个问题就是您说iframe指向其他网站。所以你必须处理cross-origin issues。
答案 1 :(得分:0)
请注意,在执行此操作时,您可能会遇到不同的安全性和跨域错误。
请记住在使用 onload 事件对其执行操作之前等待iframe内容加载:
function showFrame() {
const newFrame = document.createElement('iframe');
newFrame.width = '800';
newFrame.height = '800';
newFrame.src = 'https://www.gorkahernandez.com';
newFrame.onload = function() {
const content = newFrame.contentDocument ? newFrame.contentDocument : newFrame.contentWindow.document;
content.getElementById('HM_Item1_4_1_1').click();
}
document.body.appendChild(newFrame);
}