![](/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.