HTML文件、Javascript文件和PHP文件echo语句之间的变量范围

HTML文件、Javascript文件和PHP文件echo语句之间的变量范围,php,javascript,html,scope,Php,Javascript,Html,Scope,在这种情况下,如何定义全局javascript变量?我希望变量可以从三个位置访问: HTML页面-我希望能够在HTML页面favorites.php的代码中引用变量。 javascript文件——在HTML页面中,我加载了一个名为portal.js的javascript文件 PHP文件—在HTML文件中,我将loadtreeb.PHP加载到iframe中。在loadtreeb.php中,我有echo javascript代码,希望在代码中引用该变量。 下面是一个场景 在HTML的favorite

在这种情况下,如何定义全局javascript变量?我希望变量可以从三个位置访问:

HTML页面-我希望能够在HTML页面favorites.php的代码中引用变量。 javascript文件——在HTML页面中,我加载了一个名为portal.js的javascript文件 PHP文件—在HTML文件中,我将loadtreeb.PHP加载到iframe中。在loadtreeb.php中,我有echo javascript代码,希望在代码中引用该变量。 下面是一个场景

在HTML的favorites.php中:

<head>
    <script type="text/javascript">
       var d = new dTree();
    </script>
</head>
<body>
        <iframe id="tnav" src="loadtreeb.php" style="border: 0px; width: 200px; height: 86%; overflow: auto;">
        </iframe>
</body
在php文件loadtreeb.php中:

echo '<script type="text/javascript">';

/* echo '   d = new dTree(\'d\');'; */

 echo "d.add('1','-1','My Favorites','#','','','images/root.gif','images/rootopen.gif','1');";

 echo  '    document.write(d);';

 echo 'd.s(0);';

 echo  '</script>';
在这个场景中,我尝试在HTML页面的标题部分定义变量d,然后在三个地方引用它,而不重新定义该变量。这不行。loadtreeb.php文件中的javascript语句似乎不知道该变量。当在echo语句中定义变量时,他们就这样做了。但现在我必须在其他地方访问相同的变量。所以我注释掉了声明语句,并将其放在HTML脚本标记中


在所有这些地方,我希望通过什么方式实现该变量的可访问性?

iframe在很大程度上是一个完全独立的页面,具有自己的Javascript上下文。因此,您在主页中定义的变量通常对iframe的Javascript上下文不可见,反之亦然。

跨帧访问数据时会遇到问题。这是可能的,但很糟糕。您可能需要在浏览器的顶部对象上定义一些getter和setter,这需要对PHP脚本生成的JS进行一些更改。这会令人不快。

在favorites.php JS中,您应该声明top.d=new dTree

在loadtreeb.php JS中,必须使用跨窗口访问:top.d.which或parent.d.which

如果需要向下移动框架树,请将.frames[0].window或类似内容置于顶部

HTML页面-我希望能够在HTML页面favorites.php的代码中引用变量。 javascript文件——在HTML页面中,我加载了一个名为portal.js的javascript文件 在页面上执行javascript与直接在页面中执行javascript是一样的,因此它将访问页面上的变量,在代码中执行javascript的位置和之前的位置

标题不太正确,这将是完全相同的问题,只有2个html页面,一个在另一个iframe中

因此,如果它位于同一个域上,您可以使用:

parent.window.d
在iframe中使用父帧中的var

如果您希望在iframe内使用父帧的var,则必须执行以下操作:

window.frames["tnav"].d

这听起来很有希望,我要试一试!
window.frames["tnav"].d