【发布时间】:2021-12-20 17:26:34
【问题描述】:
这用于返回真或假:
tell application "Safari" to do JavaScript "document.querySelector(\"video\") == null" in document 1
但是,现在,在 M1 MBP 上的 macOS 12.0.1 上,它似乎没有返回任何内容(缺失值),并且似乎需要以下复杂的包装器来获得前一个结果:
tell application "Safari"
set result to do JavaScript "if (document.querySelector(\"video\") == null) {
1
} else {
0
}" in document 1
return result is 1
end tell
另一个奇怪的事情是它只有布尔值不会被返回。以下返回3.0:
tell application "Safari" to do JavaScript "3" in document 1
知道发生了什么变化吗?有没有更好的方法来取回布尔结果?
【问题讨论】:
-
我刚刚在 macOS Monterey 12.0.1 中测试了
tell application "Safari" to do JavaScript "document.querySelector(\"video\") == null" in document 1,它返回了一个 boolean。 -
感谢您的检查。奇怪。 @user3439894 你是怎么运行它的?
-
随着 Safari 打开到默认的 window 只显示 Favorites,我之前从您的问题中复制了它并将其粘贴到 Script Editor 中的新 document 中,然后按 ⌘R。在 Result pane 中它返回了
true。 -
将脚本编辑器添加到系统偏好设置 > 安全和隐私 > 隐私 >在 Safari 中的 Develop menu 上选中的 Accessibility 和 Allow JavaScript 是SOP 因为没有它的功能太有限了。
-
我有同样的问题,但我在 12.1。我有提到的权限集。我已经通过将我的通用处理程序分为 2 来解决它。 1. 在 runScriptPlain(scriptText) 上 - 如果没有预期返回,则打算使用 orig 实现,以及 2. 在 runScript(scriptText)
set montereyFix to "var jsresult = (" & scriptText & ");if (typeof(jsresult) === 'boolean') { jsresult ? 'true' : 'false'} else jsresult;"runScriptPlain(montereyFix)上。布尔结果现在是“真”或“假”。
标签: javascript applescript macos-monterey