gpt4 book ai didi

javascript - 为什么 PowerShell 函数的返回类型总是数组?

转载 作者:行者123 更新时间:2023-11-30 17:16:20 25 4
gpt4 key购买 nike

我正在尝试编写一个 PowerShell 函数来在网页上执行 JavaScript/jQuery 并将结果返回给 PowerShell,方法是使用 setAttribute 将 JavaScript 返回值存储在 DOM 中然后使用 getAttribute 在 PowerShell 中检索它。但是,以下问题困扰了我几天。请参阅下面的评论:

Function ExecJavaScript($ie, $jsCommand, [switch]$global)
{
if (!$global) {
$jsCommand = "document.body.setAttribute('PSResult', (function(){$jsCommand})());"
}
$document = $ie.document
$window = $document.parentWindow
$window.execScript($jsCommand, 'javascript')
if (!$global) {
$psresult = $document.body.getAttribute('PSResult')

# Why no matter what I do, this always returns an array instead of a String?
return $psresult.ToString()
#return @($psresult)
#return @($psresult).ToString()
#return ($psresult | select -First 1)
#return ($psresult -join '')
}
}

$ie = New-Object -COM InternetExplorer.Application -Property @{
Navigate = "https://www.google.com/"
Visible = $true
}
do { Start-Sleep -m 100 } while ( $ie.busy )

$result = ExecJavaScript $ie @'
return "JavaScript code ran successfully!";
'@

# Why $result.length is always 2 ?!!
$result.length
$result

谢谢!

最佳答案

本质上,返回null和返回null是不同的。 execScript 方法返回 null,这实际上是一个输出到管道的对象。我希望下面的代码片段可以解释您遇到的行为。

Function ReturnNull () {

0..1 | % { $null }
}

Function ReturnToNull() {

0..1 | % { $null | Out-Null }
}

# This will return 2.
(ReturnNull).length

# This will return 0 as it has been spit out to Null.
(ReturnToNull).length

您的函数基本上是 ReturnNull,并在您添加 Out-Null cmdlet 时更改为 ReturnToNull

关于javascript - 为什么 PowerShell 函数的返回类型总是数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26069428/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com