Sharing global javascript variable of a page with an iframe within that page

后端 未结 3 1351
傲寒
傲寒 2020-11-28 07:12

I have an scenario where in I have a page, which have

相关标签:
3条回答
  • 2020-11-28 07:20

    Easily by calling parent.your_var_name in your iframe's script.

    One condition: both pages (main and iframe's) have to be on the same domain.

    main page:

    <script>
     var my_var = 'hello world!';
    </script>
    

    iframe

    <script>
      function some_fn(){
        alert(parent.my_var); //helo world!
      }
    </script>
    
    0 讨论(0)
  • 2020-11-28 07:23

    Great answers above. Just to add, beware of this in ES6:

     <script>
     const my_var2 = 'hello world!';
     let   my_var3 = 'hello world!';
     </script>
    

    If you use the above in the main page, you can not refer to either my_var2 or my_var3 in the iframe(s). You must use 'var' to accomplish that.

    This is because "const, let, and class don't create properties on the global object".

    SEE: What is the proper to write a global const in javascript es6?

    0 讨论(0)
  • 2020-11-28 07:30

    Not possible if the iframe and the main document are not in the same domain (due to cross domain security policy).

    To bypass this limitation you can use cross domain messaging.

    Possible if iframe an main document are in the same domain, you can access their global variables. There are object which belongs to the window object of the iframe or the main page.

    Here is the code to access the iframe variable myvar from the main document (or an iframe) in a same domain :

    document.getElementById('iframeid').contentWindow['myvar'];
    
    0 讨论(0)
提交回复
热议问题