2011-07-26 12 views
0

この状況でグローバルなJavaScript変数をどのように定義できますか?変数を3つの場所からアクセスできるようにします。HTMLファイルとJavascriptファイルとPHPファイルとの間の変数スコープ

  1. HTMLページ - HTMLページfavorite.phpのコード内の変数を参照できるようにします。
  2. のJavaScriptファイルは - HTMLページでは、私は
  3. でPHPファイルをportal.jsというJavaScriptファイルをロード - HTMLファイルでは、私は、iframe内にloadtreeb.php読み込みます。 loadtreeb.phpで私はエコーの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 

は、portalb.js:

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>'; 
:PHPファイル、loadtreeb.phpで

function deleteitem() { 
    d.s(1); 
    d.setCookie('csd', '1'); 
} 

このシナリオでは、HTMLページのヘッダーセクションに変数dを定義しようとしています.3つのウィジェットで参照していますその変数を再定義する。これはしません。 loadtreeb.phpファイルにエコーされたjavascript文は、変数についてはわからないようです。変数がecho文で定義されたときに実行されました。しかし今、私は別の場所で同じ変数にアクセスする必要があります。そこで、宣言文をコメントアウトしてHTMLスクリプトタグに入れました。

私はその変数のすべての場所で必要なアクセス可能性を達成する方法は何ですか?

答えて

0
  1. HTMLページを参照してください - 私はHTMLページfavorites.phpのコードで変数を参照できるようにしたいです。
  2. javascriptファイル - HTMLページでは、portalというjavascriptファイルを読み込みます。jsと

ページ内でJavaScriptを実行することは、ページ内で直接実行することと同じです(実行すると(コードの前にある)変数にアクセスします))。

タイトルは正確ではありません。ちょうど2つのhtmlページ(およびもう一方のiframeに1つ)で、まったく同じ問題になります。だからここ

それは、同じドメイン上にある場合は、あなただけ使用することができます。

parent.window.d 

iframe内に親フレームにVARを使用します。あなたが親フレームからのiframe内のVARを使用することを望んでいた場合は

、あなたは何をする必要があります:これは有望な音

window.frames["tnav"].d 
+0

、私はこれは行く与えます! – user823527

+0

素晴らしい@Enki!これは動作します! – user823527

0

iframeは、ほとんどの場合、独自のJavascriptコンテキストを持つ完全に別のページです。したがって、メインページで定義した変数は通常、iframeのJavaScriptコンテキストでは表示されず、その逆もありません。

0

フレーム間でデータにアクセスする際に問題が発生します。可能ですが、厄介です。おそらく、ブラウザのトップオブジェクトにゲッターとセッターを定義するようなことをしたいと思うでしょう。これは、PHPスクリプトによって生成されるJSにいくつかの変更を必要とします。それは不愉快になるだろう。

0

favs.php JSでは、top.d = new dTree();を宣言する必要があります。 loadtreeb.php JSで

、あなたはクロスウィンドウアクセスを使用する必要があります。top.d.whateverまたはparent.d.whatever

あなたはtop.frames、フレームツリーを下に行く必要がある場合は[0] .windowなど。

https://developer.mozilla.org/en/DOM/window.frames

関連する問題