xmlhttprequest - 如何在 JScript 中使用最新可用的 XMLHttpRequest
问题描述
我使用以下命令来启动一个 JS 脚本:C:\Windows\System32\cscript.exe /nologo //E:{16d51579-a30b-4c8b-a276-0ff4dc41e755}
为了使用最新的 Chakra 引擎。
在我的脚本中,命令WScript.Echo( ScriptEngineMajorVersion() + "." + ScriptEngineMinorVersion() + "." + ScriptEngineBuildVersion());
输出11.0.19326
.
我知道这会提高性能,我想我也可以使用最新的XMLHttpRequest
而不是旧的Microsoft.XMLHTTP
(我需要responseURL),但看起来我不是。
有解决办法吗?
解决方案
我的猜测是,你加载 Chakra 引擎的方式是加载一个不可见的 IE 实例。但是根据这个 MDN 兼容性表,没有任何版本的 Internet Explorer 支持responseURL
.
编辑:不要使用 JScript
通过大量测试,尝试将 Edge 的 Chakra 引擎加载到 Windows Script Host 中,我无法找到有效的排列。创建一个htmlfile
COM 对象并强制使用 兼容x-ua-compatible
,尝试与 HTA 应用程序相同(本机和再次使用htmlfile
COM 对象),尝试创建一个MSXML2.ServerXMLHTTP.6.0
对象,我可以想象的任何 Windows Script Host hack 都不会暴露.responseURL
XMLHttpRequest 对象的属性。
最好的选择是选择一种不同的语言。在 PowerShell 中,您可以执行以下操作:
$req = [Net.WebRequest]::Create("https://youtu.be/")
$resp = $req.GetResponse()
$resp.ResponseURI.AbsoluteURI
...这将打印
https://www.youtube.com/?feature=youtu.be
如果您需要 的等价物.responseText
,只需添加以下内容:
$reader = new-object System.IO.StreamReader $resp.GetResponseStream()
$responseText = $reader.ReadToEnd()
如果你想使用 DOM 方法解析 $responseText...
$htmlfile = new-object -COM htmlfile
$htmlfile.IHTMLDocument2_writeln($responseText)
$buttons = $htmlfile.getElementsByTagName("button")
您可以查看此答案的原始修订版,以了解不起作用的示例。
推荐阅读
- c - C、硬件抽象层中的“extern”类型变量
- php - Keycloak-通过客户端获取所有用户
- google-sheets - 条件格式规则在谷歌表格中不起作用。如果添加第 3 个,它将在 2 个条件下工作,它将不起作用
- ember.js - 需要根据页面显示/隐藏按钮
- azure - 使用 SAML 身份验证的 Azure webapp 的自定义登录表单
- arm - Keil uVision - Atmel SAM3U 读取唯一标识符
- mysql - 计算同一查询中另一个 SQL 表中的行数
- spring - 使用带有spring security的keycloak JWT令牌时如何修复403
- regex - 如何从 Datastudio 中的 URL 中提取 ID?
- tensorflow - 在 TensorFlow 对象检测 API 中冻结变量