Выделите текст URL/ омнибокса при загрузке новой вкладки (Chrome)
Как программно выделить текст URL после загрузки новой вкладки?
Это код для redirect.js
/*global chrome,document,window */
(function init() {
"use strict";
chrome.storage.local.get(["url","tab.selected"], function (items) {
var url = items.url;
if(url) {
var selected = items["tab.selected"] === undefined ? true : (items["tab.selected"] == "true");
chrome.tabs.update({
"url": url,
"selected": selected
});
} else {
angular.resumeBootstrap();
}
});
}());
Как только страница с URL-адресом будет загружена, я хочу, чтобы она автоматически выделяла текст URL/ омнибокса, чтобы пользователь мог начать печатать, не нажимая Ctrl+A.
Спасибо
РЕДАКТИРОВАТЬ: основное внимание уделяется омнибоксу, но уже присутствующий текст не выделен. Я хочу, чтобы это было выделено.
2 ответа
Я смог решить эту проблему с помощью обходного пути.
Используя Autohotkey, я написал простой скрипт, который:
- мониторы для новых окон.
- Когда новое окно обнаружено, оно проверяет имя окна, чтобы увидеть, является ли оно "chrome://..." (я добавляю "...", потому что с помощью пользователей можно выбрать, что отображать на странице новой вкладки У меня chrome: // apps / как моя новая вкладка.
- Обнаружив, что новое окно было chrome: //..., оно посылает комбинацию клавиш Ctrl+A, которая выделяет весь текст в омнибоксе.
Просто. Элегантный:P
Вот код, измените его по своему усмотрению (для выполнения кода вам понадобится Autohotkey_L. В качестве альтернативы вы можете превратить его в.exe для совместимости. См. Документацию по ссылке выше.
#Persistent
#SingleInstance, Force
#NoTrayIcon
SetBatchLines, -1
SetTitleMatchMode, 2
SetWinDelay, -1
/** Enter the name of the Chrome new tab page here, for me it is "Apps - Google Chrome" */
ChromeTab := "Apps - Google Chrome"
Gui +LastFound
hWnd := WinExist()
DllCall( "RegisterShellHookWindow", UInt,hWnd )
MsgNum := DllCall( "RegisterWindowMessage", Str,"SHELLHOOK" )
OnMessage( MsgNum, "ShellMessage" )
Return
ShellMessage( wParam,lParam ) {
Global Last
if (wParam = 16 && Last = 6) {
WinGetActiveTitle, T
if (T = ChromeTab) {
SendInput, {Control Down}l{Control Up}
}
}
Last := wParam
}
Может быть возможно добавить нажатие клавиши, например F6, чтобы выделить его для вас.
Для нажатия Enter это работает, не уверен, что VK_ требуется, но может измениться, если изменить ENTER на F6.
Robot r = new Robot();
r.keyPress(KeyEvent.VK_ENTER);
r.keyRelease(KeyEvent.VK_ENTER);