How to pick element inside iframe using document.getElementById

谁都会走 提交于 2019-11-26 01:53:24

问题


I have a iframe like this

<iframe name=\"myframe1\" id=\"myframe1\" width=\"100%\" height=\"100%\" src=\"a.html\">
<html>
    <head></head>
    <frameset name=\"myframe2\" cols=\"0%, 100%\" border=\"0\" frameBorder=\"0\" frameSpacing=\"0\">
        <frame name=\"page1\" src=\"c.html\" scrolling=\"no\"></frame>
        <frame name=\"page2\" src=\"d.html\" >
            <html>
                <head></head>
                <body id=\"top\">
                    <div id=\"div1\">
                        <div id=\"div2\">
                            <div id=\"div3\">
                                <ul id=\"x\">
                                    <li>a</li>
                                    <li>b</li>
                                </ul>
                            </div>
                        </div>
                    </div>
                </body>
            </html>

        </frame>

    </frameset>
</html>
</iframe>

I want to refer to the element \"x\". I tried in several ways but I couldn\'t find a solution.


回答1:


document.getElementById('myframe1').contentWindow.document.getElementById('x')

Fiddle

contentWindow is supported by all browsers including the older versions of IE.

Note that if the iframe's src is from another domain, you won't be able to access its content due to the Same Origin Policy.




回答2:


use contentDocument to achieve this

var iframe = document.getElementById('iframeId');
var innerDoc = (iframe.contentDocument) 
               ? iframe.contentDocument 
               : iframe.contentWindow.document;

var ulObj = innerDoc.getElementById("ID_TO_SEARCH");



回答3:


(this is to add to the chosen answer)

Make sure the iframe is loaded before you

contentWindow.document

Otherwise, your getElementById will be null.

PS: Can't comment, still low reputation to comment, but this is a follow-up on the chosen answer as I've spent some good debugging time trying to figure out I should force the iframe load before selecting the inner-iframe element.




回答4:


In my case I was trying to grab pdfTron toolbar, but unfortunately its ID changes every-time you refresh the page.

So, I ended up grabbing it by doing so.

const pdfToolbar = document.getElementsByTagName('iframe')[0].contentWindow.document.getElementById('HeaderItems');

As in the array written by tagName you will always have the fixed index for iFrames in your application.



来源:https://stackoverflow.com/questions/14451358/how-to-pick-element-inside-iframe-using-document-getelementbyid

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!