2010-03-08 11 views
13

Ich habe ein paar Websites jetzt gesehen, wo, wenn Sie Text eines Artikels markieren, kopieren Sie es, und fügen Sie dann einfügen sie können mehr Text hinzufügen.Bearbeiten von Zwischenablage Daten beim Kopieren/Einfügen von einer Website

Versuchen Sie, einen Textabschnitt aus einem Artikel unter http://belfasttelegraph.co.uk/ zu kopieren und einzufügen, und Sie werden sehen, was ich meine - sie fügen einen Link zum Originalartikel im eingefügten Text hinzu.

Wie wird das gemacht? Ich nehme an, es gibt einige Javascript bei der Arbeit hier

+1

Interessant. Ich habe große Anstrengungen unternommen, um herauszufinden, wie man jede Seite vorbeugt oder jemals genau dies tut. Verwenden Sie sparsam. – Ricky

Antwort

8

Dies ist eine gute Wirkung, können Sie das Scripting sehen, die auf Kopie mit Firebug (in Firefox) ausgelöst wird.

Starten Sie Firebug und laden Sie die Seite, wählen Sie deaktivieren (da die Seite eine Menge Ajax verwendet, gibt es sehr schnell 100 Anfragen). Wählen Sie dann die Registerkarte "Alle" und versuchen Sie zu kopieren. Sie sehen eine Anfrage für ein 1x1-Pixel-Bild, aber wenn Sie auf die + -Schaltfläche drücken, um die Details zu sehen, werden Sie auf der Registerkarte 'params' sehen, dass diese GET-Anfrage den angeforderten Text als 'content'-Parameter übergibt XPath-Informationen, die verwendet wird, um die Zwischenablage DOM zu manipulieren:

start_node_xpath /HTML/BODY[@id='belfast']/DIV[@id='root']/DIV[@id='content']/DIV[@id='mainColumn']/DIV[@id='article']/DIV[5]/P[39]/text() 

end_node_xpath /HTML/BODY[@id='belfast']/DIV[@id='root']/DIV[@id='content']/DIV[@id='mainColumn']/DIV[@id='article']/DIV[5]/P[41]/text() 

Wie @Crimson wies darauf hin, es Methoden sind die Zwischenablage zu manipulieren, like zeroclipboard die Flash und ein Bild verwenden.

Ich denke, das ist, wie die Technik gemacht wird, indem Sie die image get Anfrage verwenden, um die Zwischenablage zu ändern.

+0

Ich frage mich, ob ich eine -1 auf dem Weg abgeholt habe? – amelvin

+1

+1 für die Erklärung zur Verwendung von Firebug. –

3

Sie werden feststellen, dass dies nur passiert, wenn Sie die Tastenkombination [Strg + C] verwenden und nicht, wenn Sie Text markieren und kopieren aus dem Kontextmenü auswählen.

Sie fangen einfach die Tastenkombination [Strg + C] ab.

Ferner werden Daten in die Zwischenablage hinzuzufügen, in diesem Beitrag einen Blick: How do I copy to the clipboard in JavaScript?

+0

Stimmen Sie nicht zu. Ich benutze XP/Firefox 3.5.8 und wenn ich hervorhebe, klicke mit der rechten Maustaste und wähle kopiere es fügt den Permalink an den kopierten Text an. – amelvin

1

Ich habe in letzter Zeit einen Zustrom dieser "Clipboard Hijacking" auf Websites bemerkt. thefutoncritic.com, cracked.com ... Wenn Sie Adblock verwenden, gehen Sie einfach in die Liste der "manuellen Einträge" und fügen Sie * post-copypaste.js * hinzu. Dies sollte verhindern, dass die Websites ihre Anzeigen in Ihre Zwischenablage einfügen.

0

Eine News-Site i besuchen diesen Einsatz Funktion zum Anhängen einer "Quelle" an die kopierte Auswahl:

function addLink() { 
    var body_element = document.getElementsByTagName('body')[0]; 
    var selection; 
    selection = window.getSelection(); 
    // change this if you want 
    var pagelink = "<br><br>Fuente: Emol.com - <a href='"+document.location.href+"'>"+document.location.href+"</a><br>"; 
    var copytext = selection + pagelink; 
    var newdiv = document.createElement('div'); 
    newdiv.style.position='absolute'; 
    newdiv.style.left='-99999px'; 
    body_element.appendChild(newdiv); 
    newdiv.innerHTML = copytext; 
    selection.selectAllChildren(newdiv); 
    window.setTimeout(function() { 
     body_element.removeChild(newdiv); 
    },0); 
} 
document.oncopy = addLink;