【问题标题】:Strange Javascript/vbscript behavior when opening file from browser从浏览器打开文件时出现奇怪的 Javascript/vbscript 行为
【发布时间】:2014-05-01 18:17:42
【问题描述】:

我最近必须使用的旧 Web 应用程序出现问题。有一个输入元素包含以下内容:

onClick="javascript:Run('**SomeFilePath.mdb**');"

这应该是打开一个用户各自的 .mdb 文件。

首先,在任何地方都没有定义 javascript Run 函数。我在网上搜索,因为我认为它可能是一个旧的内置 javascript,但我找不到任何东西。

其次,有一个 vbscript Run() 函数,它实现了源代码中定义的所描述的行为,但据我所知,除了通过 ajax 之外,javascript 不能调用它,正如你所见不是发生了什么。

奇怪的是这对某些用户有效!

如果有人能解释一下我为什么会感激它!

编辑: 我正在处理的唯一浏览器是 IE。我知道有一个active-x方式来打开一个文件,这就是我上面提到的vbscript Run()函数所使用的。

更新: 因此,经过更多调查/研究,当 IE 找不到 javascript Run() 函数时,它似乎默认为 vbscript Run() IS 定义的函数。但是,这只发生在某些版本的 IE 上。任何人都可以确认这种行为吗?

研究链接:

Comment referring to how IE defaults w/ scripting

Msdn article about using both script types in same page

【问题讨论】:

  • 页面中是否有其他 JavaScript(内联或链接)可能具有 Run() 函数?
  • 乍一看我没有看到任何东西,当我得到更改时我会仔细检查

标签: javascript file vbscript


【解决方案1】:

是的,您可以从 javascript 运行 vbscript,反之亦然,有时当一种语言不支持另一种语言时,我会这样做。 您可以在脚本中指明默认语言,以防您没有像 .

您也可以在调用 vbscript:functionname("..") 或 javascript:functionname("..") 等函数时指定它

正如您所注意到的,在某些情况下,浏览器会因为使用错误的语言搜索/执行函数而感到困惑并且找不到函数。 我想这种行为也会受到版本的影响,但肯定会受到脚本中逻辑流动的顺序的影响,如果浏览器首先执行 javascript,他倾向于在这种语言中走得更远,以防万一。 所以要避开这个

  1. 除非真的有必要,否则不要将两者混用,将您的 vbscript 函数翻译成 javascript)
  2. 尽量使用javascript,vbscript不太擅长处理DOM等
  3. 如果它们混合使用,请在调用函数时指定正确的脚本语言
  4. 打开脚本标签时,还要输入正确的语言,如或

所以,具体来说,要解决您的问题,请将 vbsripts 函数转换为 javascript,如果不可能,请调用您的函数,例如 onClick="vbscript:Run('**SomeFilePath.mdb**')"

【讨论】:

    猜你喜欢
    • 2019-05-20
    • 2013-11-30
    • 1970-01-01
    • 1970-01-01
    • 2013-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-16
    相关资源
    最近更新 更多