JS - getElementById在一个框架内

时间:2018-02-14 11:08:40

标签: javascript iframe getelementbyid

我正在尝试在我的网页中插入一个位于外部网页的表单。

我没有这个表单的直接网址,所以我试图以这种方式导航框架:

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

已加载外部网站的主页,但重定向无效。

2 个答案:

答案 0 :(得分:2)

您正试图获得window.frames["iframe"] ...但您创建的iframe根本没有nameid,更不用说匹配"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);
    }