使用 applescript 获取 HTML 个元素

Getting HTML elements using applescript

警告:我不擅长 JavaScript,我基于 this post 的 JavaScript 部分。

所以我有一个小脚本应该将 theDuration 设置为活动选项卡前面 window 的 HTML 元素。我查看了 HTML,完整的元素是 <span id="duration">00:10:00</span>。我希望 theDuration 成为 00:10:00。我知道您可以将 JavaScript 变量设置为下面的 JavaScript 代码,因为它在 post I based it off of 中提到,但是当我尝试 运行 下面的代码时,它不会工作。

tell application "Google Chrome"
    tell active tab of front window to set theDuration to execute javascript "document.getElementById('duration');"
end tell

编辑:现在我将 tell active tab of front window 放在 set theDuration to... 前面,它可以编译,但是 theDuration 只是 {} 而不是 00:10:00

我认为,您应该请求 innerHTML,并指明预期结果类型。未测试,因为我没有Google Chrome和你的网页:

tell application "Google Chrome"
  tell active tab of front window to set theDuration to (execute javascript "document.getElementById('duration').innerHTML;") as text
end tell

给出以下 HTML snippet:

<span id="duration">00:10:00</span>

并希望 变量 theDuration 元素 id,您将查询:

tell application "Google Chrome" to ¬
    set theDuration to ¬
        execute front window's active tab javascript ¬
            "document.getElementById('duration').innerText;"


发件人: W3Schools

HTML DOM getElementById() 方法

定义和用法

getElementById() 方法return获取具有指定值的 ID 属性的元素。

此方法是 HTML DOM 中最常用的方法之一,几乎每次您想要操作文档中的元素或从中获取信息时都会用到它。

Returns null 如果不存在具有指定 ID 的元素。

ID 在一个页面中应该是唯一的。但是,如果存在多个具有指定 ID 的元素,则 getElementById() 方法 return 是源代码中的第一个元素。

语法:

document.getElementById(elementID)

参数值:

  • 参数:元素ID
  • 类型:字符串
  • 说明:必填。您要获取的元素的ID属性值


发件人: W3Schools

HTML DOM innerText 属性

定义和用法

innerText属性设置或return指定节点的文本内容,及其所有后代

如果设置 innerText 属性,所有子节点都将被删除并替换为包含指定字符串的单个文本节点。

注:此属性与textContent属性类似,但有一些区别:

  • textContent return是所有元素的文本内容,而innerText return是所有元素的内容,except 用于 <script><style> 元素。
  • innerText 不会 return 使用 CSS 隐藏的元素的文本(textContent 会)。

提示:要设置或return元素的HTML内容,请使用内部HTML属性。



发件人: W3Schools

HTMLDOM内HTML属性

定义和用法

内部HTML 属性 设置或returns 元素的HTML 内容(内部HTML)。

语法

Return内HTML属性:

HTMLElementObject.innerHTML

设置内HTML 属性:

HTMLElementObject.innerHTML = text

属性 值

  • :文本
  • 描述:指定元素的HTML内容


我的笔记:

由于您要求 规范答案,我从 W3Schools 引用此信息,因为我发现这是对我有帮助的最佳规范来源之一当 JavaScriptAppleScript.

混合使用时

请注意,在这种特殊情况下,鉴于 HTML snippetHTMLElement.innerTextHTMLElement.innerHTML 都会 return .e.g. 00:10:00。由于两者都可以 return/set 指定节点的文本内容,请根据您的特定 needs/usage 以及您具体将其应用于什么来了解它们的差异。