1

Ist es möglich, auf ein Kopierereignis zu warten, das nicht im Dokument einer HTML-Seite vorkommt, z. B. die URL-Leiste des Browserfensters?Chrome-Erweiterungen: Erkennen von Kopiervorgängen über die URL-Leiste von Windows

Vielleicht gibt es eine Chrome Extension API oder eine schlaue Lösung, die ich übersehen habe?

+1

Es gibt keine integrierte API. Sie können dafür jedoch ein eigenes natives Betriebssystemprogramm schreiben und über nativeMessaging mit der Erweiterung kommunizieren. – wOxxOm

Antwort

0

Hier ist die mögliche Lösung, ist nicht die beste, aber besser als nichts.

Es überwacht Text Zwischenablage für URLs, und wenn eine eingefügte URL die gleiche wie in der aktuellen Registerkarte ist - können wir berücksichtigen, dass es von Omnibox kopiert wurde.

background.js:

// create element for pasting 
const textEl = document.createElement('textarea'); 
document.body.appendChild(textEl); 

var prevPasted = ''; 
setInterval(function() { 
    // paste text from clipboard to focused textarea 
    textEl.focus(); 
    textEl.value = ''; 
    document.execCommand('paste'); 
    const pastedText = textEl.value; 

    // simple cache check 
    if (pastedText !== prevPasted) { 
     prevPasted = pastedText; 

     if (pastedText.match(/https?:/)) { // you can improve you URL scheme 

      // get the current tab 
      chrome.tabs.query({active: true, currentWindow: true}, function (tabs) { 
       var tab = tabs[0]; 

       // check if current tab has the same URL 
       if (tab.url === pastedText) { 
        console.log('Omnibox URL:', pastedText); 
       } 
      }); 
     } 
    } 
}, 500); 

Vergessen Sie nicht Berechtigungen in den manifesten clipboardRead und Registerkarten hinzufügen.

Verwandte Themen