Выделите текст 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, я написал простой скрипт, который:

  1. мониторы для новых окон.
  2. Когда новое окно обнаружено, оно проверяет имя окна, чтобы увидеть, является ли оно "chrome://..." (я добавляю "...", потому что с помощью пользователей можно выбрать, что отображать на странице новой вкладки У меня chrome: // apps / как моя новая вкладка.
  3. Обнаружив, что новое окно было 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);

Другие вопросы по тегам