call javascript function from outside an iframe

后端 未结 3 1064
暗喜
暗喜 2021-01-02 10:45

I have one entire html openning inside an iframe that contains a javascript function getData().Now I am not sure how to call getData() from outside that frame.Also is it pos

相关标签:
3条回答
  • 2021-01-02 11:25

    You can get a reference to the frame window object from the window.frames property. See https://developer.mozilla.org/en/DOM/window.frames

    UPDATE:

    You can access the global context of a named iframe with window[framename]. e.g:

    <iframe src="data.html" name="data"></iframe>
    
    <script>
    var myData = window.data.getData();
    </script>
    

    Although you will need to make sure the iframe has loaded.

    In jQuery you can use the contents method if you want access to the iframe DOM:

    $("iframe").contents()
    

    All this is assuming the frame hosted within the same domain.

    UPDATE[2]:

    You asked if it is possible to call the getData function from an external js file. The answer is yes (if I understand you correctly). Here is an example:

    <html>
    <head>
        <meta charset="utf-8">
        <title>parent page</title>
    </head>
    <body>
    
        <iframe src="data.html" name="data"></iframe>
        <script src="getdata.js"></script>
    
    </body>
    </html>
    

    Then in the getdata.js file you have:

    var dataFrame = window.data;
    
    // when the frame has loaded then call getData()
    dataFrame.onload = function () {
        var myData = dataFrame.getData();
        // do something with myData..
    }
    

    Hope this answers your question :)

    0 讨论(0)
  • 2021-01-02 11:40

    In certain situation there could be a neccessity of calling a javascript function inside an iframe from the parent document, and vice versa ie; calling a javascript function in parent document from the iframe.

    For example; the parent document have an iframe with id attribute ‘iFrameId‘, and the function ‘functionInIframe()‘ is defined in that iframe document. Following code can call that iframe function from the parent document itself.

    document.getElementById('iFrameId').contentWindow.functionInIframe();
    

    And following code can call the function defined in parent document(functionInParent()) from the iframe itself.

    parent.functionInParent();
    

    This way javascript can interact between parent document and iframe.

    This is the original post.

    0 讨论(0)
  • 2021-01-02 11:48

    in these cases you name your iframe and the main body that uses/launches frame and then use parent.objectname, in JS everything is Object and you should be able to call getData()

    a quick googling led me to this -> http://www.esqsoft.com/javascript_examples/iframe_talks_to_parent/

    0 讨论(0)
提交回复
热议问题