使用 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 引用此信息,因为我发现这是对我有帮助的最佳规范来源之一当 JavaScript 与 AppleScript.
混合使用时
请注意,在这种特殊情况下,鉴于 HTML snippet,HTMLElement.innerText 和 HTMLElement.innerHTML 都会 return .e.g. 00:10:00
。由于两者都可以 return/set 指定节点的文本内容,请根据您的特定 needs/usage 以及您具体将其应用于什么来了解它们的差异。
警告:我不擅长 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 引用此信息,因为我发现这是对我有帮助的最佳规范来源之一当 JavaScript 与 AppleScript.
混合使用时请注意,在这种特殊情况下,鉴于 HTML snippet,HTMLElement.innerText 和 HTMLElement.innerHTML 都会 return .e.g. 00:10:00
。由于两者都可以 return/set 指定节点的文本内容,请根据您的特定 needs/usage 以及您具体将其应用于什么来了解它们的差异。