繁体   English   中英

Javascript:.js文件之间共享的全局变量

[英]Javascript: Global variables shared between .js files

我遇到全局变量问题。

考虑到我有以下文件:init.html,main.html,init.js,main.js和help.js:

哪里,init.html:

<HTML>
   <HEAD>
   <script type="text/javascript" src="http://code.jquery.com/jquery-1.6.3.min.js"></script>
   <script type="text/javascript" charset="UTF-8" src="init.js" ></script>
   <script type="text/javascript" charset="UTF-8" src="main.js" ></script>
   <script type="text/javascript" charset="UTF-8" src="help.js" ></script>

   </HEAD>
   <BODY>
       <script>
          $(document).ready(function() {
          test();
        });
       </script>
  </BODY>
</HTML>

在init.js中:

function test(){
alert(window.glob);
}

在main.html中:

<HTML>
  <HEAD>
      <script type="text/javascript" src="http://code.jquery.com/jquery-1.6.3.min.js"> </script>
      <script type='text/javascript' > 
          top.glob = "global variable";
      </script>
      <script type="text/javascript" charset="UTF-8" src="help.js" ></script>   
      <script type="text/javascript" charset="UTF-8" src="main.js" ></script>
  </HEAD>
  <BODY>    
     <div id="divtest"></div> 
     <form>
        <input type="button" value="button" onClick="callTest()" />
     </form>
  </BODY>
</HTML>

main.js:

function change(p){
   window.glob = p;

   $('#divtest').html("<iframe id='IFRAMEtest' width='720' height='400' frameborder='0' src='init.html'></iframe>");
}

在help.js中:

function callTest(){
 change('param');
}

当我点击按钮时,显示“全局变量”,但我需要显示“param”。

简而言之,我需要一个.js文件读取另一个js文件中的全局变量,其中此变量被送入由用户事件调用的函数中。

谢谢。

edit - 导入文件之前初始化的全局变量。 js和使用顶部。 适用于IE和Firefox,但Chrome显示“未定义”

看看这里: 跨越多个文件Javascript中的全局变量主要的是,您可能必须在实际文件之前声明全局变量,因此请在包含之前尝试插入这个变量来帮助.js

所以试试这个。

<script type='text/javascript' > 
  window.glob = "global variable"; 
</script>

所以你的代码应该是:

<head>
    <script type="text/javascript" src="http://code.jquery.com/jquery-1.6.3.min.js" ></script>

    <script type='text/javascript' > 
        window.glob = "global variable";
    </script>

    <script type="text/javascript" charset="UTF-8" src="help.js" ></script>   
    <script type="text/javascript" charset="UTF-8" src="main.js" ></script>
</head>

试试看,看看它是否有效。 另外,为此从main.js中删除全局变量声明。

实际上,没有跨越窗口(框架)的全局上下文。 “family”中的所有帧都可以访问一个名为“top”的变量,该变量引用最顶层的窗口,因此您可以使用它。

top.glob = "global variable";

并在您的iframe代码中:

function test(){
  alert(top.glob);
}

编辑 - 这是您的代码的略微简化版本 ,它适用于我。

当您在框架内并希望从父窗口获取窗口变量时,您必须引用它。

使用topwindow.top

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM