2011-09-19 58 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

好的,谢谢,我会牢记这一点。 –