![](/img/trans.png)
[英]Compute the height with JavaScript of a long paragraph and Chrome / Chromium
[英]Open Chrome/Chromium from command line and send javascript action to chrome/chromium console
在Ubuntu 18.04上 ,我试图创建一个警报以记住我每天跟踪我的工作日志。
创建sh文件put_hours.sh
#!/bin/bash
zenity \
--forms \
--title="TIME TRACKING" \
--text="Please track your time" \
--add-entry="¿ What have you done ?" \
--ok-label "GO"
case $? in
0) chromium-browser http://site/that/I/want/to/open
;;
1)
;;
esac
使它可执行
chmod +x put_hours.sh
运行
./put_hours.sh
如您所见,这可行,但是我的问题是:
如何在打开的网址中向chrome / chromium控制台发送javascript命令?
我需要运行一个简单的命令,例如:
document.getElementById("my_id").value = 'nothing to do'
作为字符串“无事可做”发送的值应该是Zenity打开的窗口传递的值。
我使用Zenity制作窗口,但我没有被迫使用此软件。
单击GO
后,Zenity将打印用户输入到标准输出的小时数。
第一步是修改脚本以捕获结果并将其分配给变量:
hours=$(zenity \
--forms \
--title="TIME TRACKING" \
--text="Please track your time" \
--add-entry="¿ What have you done ?" \
--ok-label "GO")
接下来的操作取决于对网站的访问和控制类型。 一些选择是黑客。
对于以下每个选项,将$hours
变量作为查询参数传递给网站,例如:
case $? in
0) chromium-browser "http://site/that/I/want/to/open?hours=$hours"
您可能会很幸运,上面的方法将起作用。 如果首先不起作用,则您可能输入了错误的查询参数名称。
要确定正确的查询参数名称是什么,请检查源代码以及手动提交表单时的行为。
例如https://www.google.com?q=pre+populate+the+search+bar
在页面加载时,使用篡改猴子工具运行用户脚本,该脚本可提取查询参数并设置字段。
// ==UserScript==
// @name Set Hours
// @match http://site/that/I/want/to/open*
// ==/UserScript==
(function() {
var urlParams = new URLSearchParams(window.location.search); // Reference: https://stackoverflow.com/a/47566165/241294
if (urlParams.has('hours')) {
var hours = urlParams.get('hours');
document.getElementById("my_id").value = hours;
alert('well done ad3luc you did ' + hours + ' hours today');
}
})();
当然,缺点是逻辑在两个地方,脚本和浏览器中。
这是一个hack,但我确实喜欢分离关注点。 该脚本将值发送到网站。 该网站设置字段值。
您还需要确保选择的参数不会与网站使用的任何现有查询参数冲突。
更改网站的源代码,使其支持选项A。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.