2011-03-06 9 views
0


他のHTMLページからJavaScript関数(オブジェクト内にある.jsファイル内)を呼び出す際に問題があります。コード例では、単純なHello World関数を使用します。jsファイルの外でJavaScript関数を呼び出す

 
    //.js file 

    window.addEvent('domready',function(){ 

     var Site = { 
     //Here I have like three other functions 

     //This function I want to detect the browser version. I use MooTools for this 
     detectBrowser : function(){ 
     if(Browser.ie){ 
      //Then what ever content goes here 
     } 
     } 
     } 

     //I execute the other three functions here because they need to be called on every page 
     Site.dropdownmenu(); 
     Site.accordion(); 
     Site.lightbox(); 
    }); 

私はMoodToolsで作業していますので、私はdomready関数の中にすべてを書きました。
今、cetect関数はのみ1ページで実行します。私はこのように何とかしようとしました:

 
    //In the HTML file between two script tags: 
    Site.alert(); 

それは動作しません。何か案は?
.jsファイルで実行するとうまく動作します。しかし私はすべてのページでそれを実行したくありません。

+2

アラートは標準的なJavaScript関数なので、開始のために何か別のものを呼び出す – cusimar9

+0

何が間違っているかを誰かが知るために十分なコードを掲載していません。 – Pointy

+0

私たちに(非)実例を示してください。 – SLaks

答えて

1

varで変数を宣言すると、変数はその関数のローカルであり、その関数の外部からはアクセスできなくなります。それが明示的にグローバルにするために、windowのプロパティとしてそれを宣言します。これは、コードが動作するために必要はありません

window.addEvent('domready',function(){ 
    window.Site = ... 

、それだけでSiteがグローバルであることをあなたのコードを読むかもしれないプログラマのため、それが明示的になります。

+0

はい、しかし、それは問題だと思います。サイト変数はグローバルではありません。 – Emil

+0

これは、関数の外でそれにアクセスしたい場合は、 'var'を使うべきではありません。なぜなら[グローバルは一般的に悪い](http://c2.com/cgi/wiki? – outis

+0

varを削除してwindow.Site =と置き換えようとしましたが、まだ動作しません。何が起こっているのかわかりません。 – Emil

1

外部Javascriptファイルはコードを実行します。コードはどこから来ているのかわかりません。

コードが外部JSファイルの後に実行される限り、正常に動作します。

+0

hmmm ....私はそれを動作させることができません:( – Emil

関連する問題