2011-09-19 30 views
0

我一直在尋找這個問題的答案現在4個小時,沒有成功。如何調用函數

嗯,我嘗試做執行,如果用戶正在使用某種瀏覽器,做了一個功能。

我有用於檢測瀏覽器,版本和OS在頁面的頭部分的腳本,它的工作原理。

如果我在頁面的主體使用下面的代碼,它工作正常。

<script type="text/javascript"> 
if (BrowserDetect.browser == "Chrome") 
{ 
    document.write("You're using Chrome") 
} 
else 
{ 
    document.write("You're not using Chrome") 
} 
</script> 

但是如果我把代碼中的外部腳本片,我怎麼使用它? 我試着把它放在一個函數中,並使用這段代碼在加載時調用該函數。

<body onload="BrowserDetect();"> 

請注意,外部腳本表在我的頁面的頭部被調用。

這是外部腳本表中的代碼。

function BrowserDetect() 
{ 
    if (BrowserDetect.browser == "Chrome") 
    { 
     document.write("You're using Chrome") 
    } 
    else 
    { 
     document.write("You're not using Chrome") 
    } 
} 

正如您所看到的,它與網頁正文中的代碼完全相同。但是當它被放入一個函數並被調用時,它不起作用。爲什麼?

+0

瀏覽器嗅探通常是一個壞主意(除非是用於「哎,使用一個更好的瀏覽器」式的消息) – ThiefMaster

+0

是否發生錯誤?什麼輸出到JavaScript控制檯? –

回答

3

因爲你命名的調用方法一樣使用BrowserDetect對象。

嘗試

function BrowserDetectMethod() 
{ 
    if (BrowserDetect.browser == "Chrome") 
    { 
     document.write("You're using Chrome") 
    } 
    else 
    { 
     document.write("You're not using Chrome") 
    } 
} 

<body onload="BrowserDetectMethod();"> 
+0

+1用於解釋爲什麼 –

1

嘗試將該函數的名稱更改爲BrowserDetect以外的名稱。

0

調用它,我從一開始就具有的是,如果我有他們的網頁上我的腳本工作真正的問題,但我想他們一個外部樣式表,並且如果我在外部腳本表中包含它們,腳本不起作用。所以我發現瞭如何解決它,我會列舉下面所做的一切,以使上面列出的所有東西都完美地工作。

對於那些你想知道如何檢測瀏覽器的,我是從這個網站:http://www.quirksmode.org/js/detect.html。 這工作sooooooooo好得多更容易使用普通的javascript來檢測它。

首先,功能應該被命名爲比BrowserDetect以外的東西;我將其命名爲BrowserDetectMethod,就像Gaby所建議的一樣。

第二,如果我打算將功能包含在外部樣式表中,則需要在頁面的底部處調用外部樣式表。不像我想要的那樣在頁面的頭部。

三:

我決定最好的方式瀏覽器嗅探是要找到我想要聯繫的瀏覽器,而不是那些我沒有。(因爲有任何數量的瀏覽器,在那裏,我只希望三個接觸)

然而,用上面的方法,我不能這樣做,因爲這個代碼不工作:

function BrowserDetectMethod() 
{ 
    if (BrowserDetect.browser != "Chrome" && BrowserDetect.browser && "Safari" ||BrowserDetect.browser && "Firefox") 
    { 
     document.write("You're not using a supported browser"); 
    } 
    else 
    { 
     document.write("You're using a supported browser"); 
    } 
} 

代碼不起作用的原因是因爲它在if語句中不能包含多個「和」邏輯運算符。

所以我不得不通過嵌套達到預期的影響if語句,像這樣:

function BrowserDetectMethod() 
{ 
    if (BrowserDetect.browser != "Chrome") 
    { 
     if(BrowserDetect.browser != "Firefox") 
     { 
      if(BrowserDetect.browser != "Safari") 
      { 
       document.write("You're not using a supported Browser"); 
      } 
      else 
      { 
       document.write("You're using a supported Browser"); 
      } 
     } 
     else 
     { 
      document.write("You are using a supported Browser"); 
     } 
    } 
    else 
    { 
     document.write("You are using a supported Browser"); 
    } 
} 
+0

可以使用多個邏輯運算符。你只是沒有寫正確的..所以使用'var b = BrowserDetect.browser;如果(b!='Safari'&& b!='Firefox'&& b!='Chrome'){// supported} else {// not supported}' –

+0

好的,謝謝,我會牢記這一點。 –