导航
  • 全部
...

关于Javascript判断浏览器Flash版本

mscorp 2011-03-23 10:44:36
有一段源代码做这个事,但有一个细节我不明白,想请教大家,请先看源码:

  1. <html>

  2. <SCRIPT type=text/javascript><!--
  3. var i_flash;
  4. var v_flash;
  5. // Netscape
  6. if (navigator.plugins) {
  7. for (var i=0; i < navigator.plugins.length; i++) {
  8. if (navigator.plugins[i].name.toLowerCase().indexOf("shockwave flash") >= 0) {
  9. i_flash = true;
  10. v_flash = navigator.plugins[i].description.substring(navigator.plugins[i].description.toLowerCase().lastIndexOf("flash ") + 6, navigator.plugins[i].description.length);
  11. }
  12. }
  13. }
  14. // --></SCRIPT>

  15. <SCRIPT type=text/vbscript><!--
  16. //IE
  17. on error resume next
  18. set f = CreateObject("ShockwaveFlash.ShockwaveFlash")
  19. if IsObject(f) then
  20. i_flash = true
  21. v_flash = hex(f.FlashVersion())
  22. end if
  23. // --></SCRIPT>

  24. <SCRIPT type=text/javascript><!--
  25. if (i_flash) {
  26. document.writeln("你已经安装了Flash插件")
  27. if (v_flash) {
  28. document.writeln(" - 版本 " + v_flash);
  29. }
  30. } else {
  31. document.writeln("你没有安装Flash插件")
  32. }
  33. // --></SCRIPT>

  34. <input type="button" onclick="ArgTest(3,4,5)" value="onon">
  35. </html>

  36. 注意到这段源码是用Javascript和Vbscript共同构成的,定义了一个i_flash和v_flash,但是困惑的是为什么vbscript那段脚本能对这两个变量进行修改,是因为加了<!-- // -->这些注释符的原因吗? 还有加上这些的具体作用是什么,碰到几回了,本想查下资料,今天就顺带问一下了,若有参考资料更好! 谢谢大家抽空指教!!
...全文
给本帖投票
227 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
knightzhuwei 2011-03-23
  • 打赏
  • 举报
回复
ASP页面内VBScript和JScript的交互
亚普工作室

ASP具备管理不同语言脚本程序的能力,能够自动调用合适的脚本引擎以解释脚本代码和执行内置函数。ASP开发环境提供了两种脚本引擎,即 VBScript(缺省)和JScript。不过,开发者并没有被限制于只能使用这两种语言,只要能够提供合适的ActiveX脚本引擎就能使用任何脚本语言。

脚本语言的选择往往基于许多不同原因:它可能是开发者最为熟悉的语言,可能是对给定工程来说能够提供最多特色支持的,也有可能是最具效率的。不同的环境和要求使得我们在选择脚本语言时注重不同的因素,同时也使得我们在某些时候面临选定的脚本语言不能直接提供其它语言固有的函数这一问题,或某个脚本已经写成但用的却是另外一种脚本语言。

此时应该怎么办?是否需要用当前所用的脚本语言重写这些脚本?或者说,是否有可能在一种脚本语言中调用其它脚本语言的内置函数?本文要说明的就是在ASP应用中如何让VBScript脚本和JScript脚本交互以最大限度地获得两种脚本语言的特色支持。

   一、VBScript和JScript的内置函数

在VBScript和JScript中,有大量的内置函数功能是相同或类似的。然而,在一种脚本语言中内置的函数并非总是在另外一种脚本语言中也有对应的函数。例如,VBScript提供了许多用于操作字符串和格式化数据的函数,这些函数在JScript中并不存在。这些函数包括 StrReverse()、Filter()以及FormatCurrency()等。在另一方面,JScript所提供的用于管理数组、字符串编码等的函数在VBScript中也没有定义,如join()、reverse()、pow()、位操作、escape()和unescape()等。

   那么,如果在JScript程序中需要一个VBscript函数该怎么办呢?

   二、异种脚本的互相调用

   如果需要在JScript脚本中调用一个VBScript中内置的函数,则应该写一个VBScript用户定义函数(在这里调用VBScript内置函数),然后在JScript脚本中象调用公用JScript函数一样调用这个用户定义函数。

   例如,如果要调用的VBSCript内置函数是FormatCurrency(),则可以声明如下自定义函数:

  < SCRIPT LANGUAGE= "VBSCRIPT " RUNAT= "SERVER ">
 Function FormatValue(Value)
  FormatValue = FormatCurrency(Value)
 End Function
  < /SCRIPT>

   接下来在JScript代码中就可以象普通JScript函数一样调用FormatValue()了。用类似的方法也可以实现VBScript代码调用JScript函数。

   应用同样的规则,我们可以在任何脚本内调用任何用户定义函数。不过,从JScript脚本内调用一个不带参数的VBScript过程(Sub)时应略加注意,此时在JScript中应该象调用一个不带参数的JScript函数一样调用它,如用foo()调用VBScript Sub foo过程。

   三、数据共享

   在某些情形下混合运用VBScript和JScript函数是非常有用的,但在不同语言脚本之间共享数据也可能很有用。实现这种共享的方法很简单:不管使用的是什么语言,只要是在页面级声明的变量就可以任意引用。

   对象的使用方法也相似,可以任意选用合适的语言读取、修改属性或调用对象的方法。当然给定对象的属性和方法是由创建该对象实例的语言所定义的。正如上例 VBScript的过程调用,当从JScript中调用一个不带参数的VBScript对象的方法时,其调用方法也遵从JScript的调用规则,反之亦然。

   四、数组管理

   数组共享问题稍微复杂一点。虽然数组也象其它变量一样可以在不同语言脚本之间共享,但必须注意兼容方面的问题。

   VBScript数组在JScript下可以用VBScript的符号引用,即用myArray(2)引用数组元素而不是JScript的数组元素引用符号myArray[2]。此外,还可以使用一个特殊的JScript对象——VBArray对象将VBScript数组转换为JScript数组。下面的代码从VBScript数组myVBArray创建JScript数组myJSArray:

 var Temp = new VBArray(myVBArray)
 var myJSArray
 myJSArray = Temp.toArray()

   上述代码首先创建一个临时的VBArray对象,然后使用它的toArray()方法将自己转换为JScript数组。此后就可以象普通JScript数组一样使用myJSArray,如myJSArray[1]。但应当注意的是,toArray()方法将把一个多维的VBArray转换为一维的 JScript数组。

   从VBScript中引用JScript数组更为复杂。虽然在VBScript中我们可以直接访问JScript数组相关的方法和属性,但没有直接访问 JScript数组的单个元素的方法。也就是说,我们可以在VBScript脚本中读取JScript数组的长度属性,如下所示:

   x = myJSArray.length

   但无法直接读取该数组的单个元素,下面的VBScript代码是不正确的:

   x = myJSArray(3)

   解决该问题的一个可行的方法是执行一个转换过程,如下面的代码所示,此处假定VBScript是缺省的脚本语言:

< %
  Dim Temp
  Dim myVBArray
  Temp = myJSArray.join( ", ")
  myVBArray = Split(Temp, ", ")
%>

   此处的JScript join()方法将数组myJSArray元素转换到一个以逗号为分割符的字符串,VBScript Split()函数将字符串转换为VBScript数组。注意这里我们是在VBScript环境下调用JScript的join方法。依照此例,我们可以通过自定义VBScript函数来模拟JScript的VBArray对象的toArray()方法以实现JScript数组到VBScript数组的转换。

   五、小结

   在同一个ASP工程内灵活选用不同脚本语言具有许多优点,这些脚本之间的交互能力更为开发者集成不同语言所提供的内置函数和其它功能带来了更多的机会,同时也使得实现既可用于VBScript也可用于JScript环境的通用脚本库成为可能。
mscorp 2011-03-23
  • 打赏
  • 举报
回复
有哪位朋友知道吗?在线等哦,呵呵
mscorp 2011-03-23
  • 打赏
  • 举报
回复
现在不支持脚本的浏览器不多吧?!


OK,结贴,分数不多,非常感谢大家的帮忙!
knightzhuwei 2011-03-23
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 mscorp 的回复:]

谢谢楼上的朋友,那代码里加注释标签的作用主要是做何用?
[/Quote]
如果浏览器不支持脚本 可以避免把代码显示出来
mscorp 2011-03-23
  • 打赏
  • 举报
回复
谢谢楼上的朋友,那代码里加注释标签的作用主要是做何用?
蓝色_冰点 2011-03-23
  • 打赏
  • 举报
回复
你可以运行一下试试
<html>
<head>
<title></title>
<script type="text/javascript" language="javascript">
function sayHello(name){
alert("hello "+name);
}
</script>
<script type="text/vbscript" language="vbscript">
sayHello "you"
</script>
</head>
<body>
</body>
</html>
蓝色_冰点 2011-03-23
  • 打赏
  • 举报
回复
关于javascript和vbscript混用,其实很简单,在IE里,它们的变量和函数等,可以共用
比如JS定义了一个函数 function sayHello(name){ alert("hello "+name); }
那么在另一个vbscript标签里的vbscript代码,可以直接调用: sayHello "you"
同样,变量也可以共用
ycproc 2011-03-23
  • 打赏
  • 举报
回复
应当是在后台判断

然后ajax传到前台吧
mscorp 2011-03-23
  • 打赏
  • 举报
回复
2楼有回答我部分问题,非常感谢!
mscorp 2011-03-23
  • 打赏
  • 举报
回复
最后一句问题给放到code里了,大家没注意看到,不好意思。

我想问的问题在这边:

注意到这段源码是用Javascript和Vbscript共同构成的,定义了一个i_flash和v_flash,但是困惑的是为什么vbscript那段脚本能对这两个变量进行修改,是因为加了<!-- // -->这些注释符的原因吗? 还有加上这些的具体作用是什么,碰到几回了,本想查下资料,今天就顺带问一下了,若有参考资料更好! 谢谢大家抽空指教!!
汉尼拔 2011-03-23
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 sharp_ice 的回复:]

推荐使用Adobe官方提供的swfobject.js,非常方便的嵌入swf,兼容各种浏览器
获取版本的方法如下:

var swfVer=swfobject.getFlashPlayerVersion();
swfVer.major; //这是主版本号,比如10
swfVer.minor; //这是副版本号,比如1
//那么Flash插件的版本就是 10.1
[/Quote]

+++++
蓝色_冰点 2011-03-23
  • 打赏
  • 举报
回复
推荐使用Adobe官方提供的swfobject.js,非常方便的嵌入swf,兼容各种浏览器
获取版本的方法如下:

var swfVer=swfobject.getFlashPlayerVersion();
swfVer.major; //这是主版本号,比如10
swfVer.minor; //这是副版本号,比如1
//那么Flash插件的版本就是 10.1

87,995

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧

手机看
关注公众号

关注公众号

客服 返回
顶部