call javascript function from outside an iframe

2019-02-09 18:56发布

问题:

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 possible to call it from an external javascript file ?

回答1:

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 :)



回答2:

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/



回答3:

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.