Snažím se napsat malý bookmarklet, který dokáže extrahovat nějaký text z aktivní stránky a načíst ho do schránky.
Extrakce je dostatečně snadná, ale opravdu jsem se zasekl při kopírování do schránky. Momentálně jsem jen alert
zadejte text a stiskněte Ctrl +C zkopírovat text ze schránky, což není ideální.
Přečetl jsem si How to Copy to Clipboard in JavaScript a další otázky, které naznačují, že bych měl používat zeroclipboard, ale nemám ponětí, jak by to fungovalo z bookmarkletu , vzhledem k tomu, že musím načíst externí flash a javascriptové prostředky, aby bylo možné knihovnu používat.
Nemám žádné problémy se zpackáním DOM stránky, abych toho dosáhl, nebo s tím, že musím povolit některá oprávnění v mém prohlížeči (Google Chrome), protože se jedná pouze o soukromý bookmarklet.
Jakékoli odkazy by byly oceněny.
Odpověď
Pár prohlášení:
- Nesnažím se vás spamovat
- Pokud se rozhodnete toto použít, nic nezískám
Před časem jsem vytvořil generátor záložek, aby mi usnadnil vytváření záložek.
Je povoleno jQuery, ale to neznamená, že máte používat jQuery.
Můžete se podívat na zdroj a zjistit, jak importovat další skript/knihovnu na stránku prostřednictvím bookmarkletu.
Zejména řádky, které importují jQuery:
if (!window.zbooks) { //if zbooks hasn't been set, initialize it //s used for the Script element var s = document.createElement('script'); //r used for the Ready state var r = false; //set the script to the latest version of jQuery s.setAttribute('src', 'http://code.jquery.com/jquery-latest.min.js'); //set the load/readystate events s.onload = s.onreadystatechange = function() { /** * LOAD/READYSTATE LOGIC * execute if the script hasn't been ready yet and: * - the ready state isn't set * - the ready state is complete * - note: readyState == 'loaded' executes before the script gets called so * we skip this event because it wouldn't have loaded the init event yet. */ if ( !r && (!this.readyState || this.readyState == 'complete' ) ) { //set the ready flag to true to keep the event from initializing again r = true; //prevent jQuery conflicts by placing jQuery in the zbooks object window.zbooks = {'jQuery':jQuery.noConflict()}; //make a new zbook window.zbooks[n] = new zbooks(c); } }; //append the jQuery script to the body b.appendChild(s); }
Doufám, že to pomůže.