VBScript在窗口中未正确执行.IE 9中的execScript
VBScript not executed correctly in window.execScript in IE 9
我知道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
看起来execScript或VBScript根本不会更改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.execScript或IsObject(VBScript)仅更改JS变量的值。
相关文章:
- Mozilla并没有完美地执行这段代码,尽管它适用于Chrome和IE
- "对象没有't支持这种性质或方法“;在IE 8中.在调试中执行精细
- setTimeout在IE中执行得很快
- IE可以同时执行两个JavaScript函数吗?
- IE 在使用 clientscript.registerstartup 调用处理程序之前停止执行 JavaScript
- Javascript为什么IE不执行这段代码
- 使用 IE 开发人员工具防止 JS 执行
- 在 IE 上,表达式执行两次
- MaintainScrollPositionOnPostback无法在IE浏览器上执行窗口重新加载功能
- 在非IE中从HTML页面执行Ruby文件
- ActiveX/COM对象正在执行OutputDebugString,以便与JavaScript中的IE一起使用
- 无法在IE中执行本地脚本
- javascript在显示线性日历时不执行(仅在所有版本的IE上)
- 从web浏览器(最重要的是IE)来看,JS执行本地命令最可靠的方法是什么
- VBScript在窗口中未正确执行.IE 9中的execScript
- IE和FF中执行js的速度较慢
- IE和chrome不会在发送XMLHTTPRequest之前执行js代码,直到它收到该请求的响应
- 为什么IE在调试模式下只是跳过错误,但没有调试就停止执行js
- $scope's方法通过ng-click调用:由IE执行两次
- 为什么IE执行javascript比Mozilla FF慢