【问题标题】:How to use the latest available XMLHttpRequest in JScript如何在 JAVAScript 中使用最新可用的 XMLHttpRequest
【发布时间】:2019-05-02 10:56:10
【问题描述】:

我使用以下命令启动 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),但看起来我不是。

有解决办法吗?

【问题讨论】:

    标签: xmlhttprequest jscript chakra


    【解决方案1】:

    我的猜测是,你加载 Chakra 引擎的方式是加载一个不可见的 IE 实例。但是according to this MDN compatibility table没有支持responseURL的Internet Explorer版本。

    编辑:不要使用 JScript

    通过大量测试,尝试将 Edge 的 Chakra 引擎加载到 Windows Script Host 中,我无法确定任何有效的排列。创建htmlfile COM 对象并使用x-ua-compatible 强制兼容,尝试与HTA 应用程序相同(本机和再次使用htmlfile COM 对象),尝试创建MSXML2.ServerXMLHTTP.6.0 对象,没有Windows Script Host hack我可以设想会公开 XMLHttpRequest 对象的.responseURL 属性。

    最好的选择是选择一种不同的语言。在 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")
    

    您可以查看original revision of this answer 以了解不起作用的示例。

    【讨论】:

    • 我已经尝试过您的建议,但我在xhr.send() 上收到了一个NetworkError(请求与Microsoft.XMLHTTP 合作),我无法检索更多信息,因为当我尝试@ 987654337@ 例外,它是nullundefined
    • @Twistingnether 拍摄。好吧,在我的测试中,我没有遇到网络错误(请尝试xhr.send('')),但我失败了一点。因为htmlfile.parentWindow.XMLHttpRequest() 类异步传递其结果对象,所以onload() 方法似乎不像Microsoft.XMLHTTPMSXML2.ServerXMLHTTP.6.0 COM 对象那样暴露给单线程JScript 实例。我仍在尝试是否可以找到解决方法。目前,我能想到的唯一组合是在 HTA 应用程序中使用 JavaScript 而不是 JScript。
    猜你喜欢
    • 2011-06-11
    • 2011-01-20
    • 1970-01-01
    • 1970-01-01
    • 2020-09-26
    • 2018-03-24
    • 2022-11-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多