VBScript在窗口中未正确执行.IE 9中的execScript

VBScript not executed correctly in window.execScript in IE 9

本文关键字:IE 执行 中的 execScript 窗口 VBScript      更新时间:2023-09-26

我知道IE 8和9已经过时了。但我需要检查那里的flash插件。他们没有提供有用的navigator.plugins数组,所以我在寻找替代方案。在这里可以找到一个。

另一个是这样的:

var a = void(0);
window.execScript("On error resume next: a = IsObject(CreateObject('ShockwaveFlash.ShockwaveFlash.11'))", "VBScript");
console.log(a); //-> undefined

或:

var a = 'jess';
window.execScript("On error resume next: a = IsObject(CreateObject('ShockwaveFlash.ShockwaveFlash.11'))", "VBScript");
console.log(a); //-> 'jess'

或:

var a = false;
window.execScript("On error resume next: a = IsObject(CreateObject('ShockwaveFlash.ShockwaveFlash'))", "VBScript"); //no version string here
console.log(a); //-> false

看起来execScriptVBScript根本不会更改a的值。

我猜,执行此脚本的范围有问题(无法访问a),或者类似的问题。我在一个匿名函数和控制台中尝试过这段代码。

有人碰到过这个问题吗?有什么解释或解决办法吗?非常感谢!

好吧,主要问题是VBScript(或JS字符串中的换行符,它假装是VBScript)中缺少换行符。

代替:

window.execScript("On error resume next: a = IsObject(CreateObject('ShockwaveFlash.ShockwaveFlash.10'))", "VBScript");

你必须写:

window.execScript("On error resume next:'n a = IsObject(CreateObject('ShockwaveFlash.ShockwaveFlash.10'))", "VBScript");

这很管用。我不熟悉Basic或VBScript,但我已经考虑过了,并认为它需要换行符才能知道,接下来会有一个新命令。

我仍然不确定,假设是否正确,如果结果为true,则window.execScriptIsObject(VBScript)仅更改JS变量的值。