警告:我不擅长 JavaScript,我的 JavaScript 部分基于 this post .
所以我有一个小脚本应该设置 theDuration
到事件选项卡前窗口中的 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...
前面,它编译了,但 Duration 只是 {}
而不是00:10:00
.
最佳答案
给定以下HTML片段:
<span id="duration">00:10:00</span>
并且想要变量 theDuration
包含 duration
的值当元素为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() 方法返回具有指定值的 ID 属性的元素。
此方法是 HTML DOM 中最常见的方法之一,几乎每次您想要操作文档中的元素或从中获取信息时都会用到。
如果不存在具有指定 ID 的元素,则返回 null。
ID 在页面内应该是唯一的。但是,如果存在多个具有指定 ID 的元素,则 getElementById() 方法将返回源代码中的第一个元素。
语法:
document.getElementById(elementID)
参数值:
- 参数:elementID
- 类型:字符串
- 描述:必填。您想要获取的元素的 ID 属性值
来自: W3Schools
HTML DOM insideText 属性
定义和用法
innerText 属性设置或返回指定节点、及其所有后代的文本内容。
如果设置innerText 属性,所有子节点都将被删除并替换为包含指定字符串的单个Text 节点。
注意:此属性与 textContent 属性类似,但存在一些差异:
- textContent 返回所有元素的文本内容,而innerText返回所有元素的内容,除了
<script>
和<style>
元素。 - innerText 不会返回用 CSS 隐藏的元素的文本(textContent 会)。
提示:要设置或返回元素的 HTML 内容,请使用innerHTML 属性。
来自: W3Schools
HTML DOM insideHTML 属性
定义和用法
innerHTML 属性设置或返回元素的 HTML 内容(内部 HTML)。
语法
返回innerHTML属性:
HTMLElementObject.innerHTML
设置innerHTML属性:
HTMLElementObject.innerHTML = text
属性(property)值(value)
- 值:文本
- 描述:指定元素的 HTML 内容
我的笔记:
既然您要求规范的答案,我引用来自 W3Schools 的信息因为我发现它是最好的规范来源之一,在使用 JavaScript 与 AppleScript 混合使用时对我有帮助。
请注意,在这种特殊情况下,给定 HTML snippet,即 HTMLElement.innerText 和 HTMLElement.innerHTML 都会返回。例如00:10:00
。由于两者都可以返回/设置指定节点的文本内容,因此只需根据您的特定需求/用途以及您具体应用它的目的来了解它们的差异。
关于javascript - 使用 applescript 获取 HTML 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67950402/