• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Bestimmten Text nach Klick auf Grafik in Zwischenablage (Clipboard) kopieren

rasputoon

New member
Hallo zusammen,

ich habe nun schon eine Weile gegoogelt aber leider keine passende Lösung gefunden, daher hoffe ich, daß mir der ein oder andere vielleicht helfen kann. Ich stehe vor folgendem Problem: Ich erstelle eine Website mit kleinen Grafiken, nun soll bei einem Klick auf eine Grafik, eine zu der jeweiligen Grafik passender Text in den Zwischenspeicher kopiert werden. Dieser Text soll entweder der Text sein, der als Alt-Text verwendet wird oder sonstwo im Quelltext stehen (er soll nicht zu sehen sein). Nach dem Klick soll die Grafik einen rote Rahmenbekommen, womit man sieht, dass der Klick auch funktioniert hat. Klickt der User dann auf eine andere Grafik verschwindet der rote Rahmen an der vorherigen und der Rahmen ist dann bei dieser Grafik vorhanden. Hat jemand eine Idee, wie ich das umsetzen kann? Oder gibt es vielleicht schon ein fertiges Skript für sowas? Im Voraus schonmal vielen Dank.
 
nun soll bei einem Klick auf eine Grafik, eine zu der jeweiligen Grafik passender Text in den Zwischenspeicher kopiert werden.
Hierzu stelle ich mal folgenden Code zur Diskussion, den ich mal irgendwann irgendwo gefunden habe und bei mir ganz gut funktioniert:
HTML:
function copytexttoclipboard(text, strip_html){
	if (!text) {
		alert("Es wurde kein Text definiert, bitte schalten Sie einen Systemadministrator ein!");
		return false;
	}
	if (window.clipboardData) {
		try {
			if (strip_html) {
				text = text.replace(/\s*<BR>\s*/gi, "\r\n").replace(/\s*<P>\s*/gi, "\r\n\r\n").replace(/<\/\w+.*?>/ig, '').replace(/\r/, "\r\n");
			}
			window.clipboardData.setData("Text", text);
			return true;
		}
		catch(e) {
			alert('Ihr Browser unterstützt diese Funktion leider nicht.');
			return false;
		}
	}
	else if (navigator.userAgent.match(/ Gecko\//)) {
		if (!strip_html) {
			text = text.replace(/</g, '<');
		}
		var tempiframe = document.createElement("iframe");
		tempiframe.setAttribute('width', '1');
		tempiframe.setAttribute('height', '1');
		tempiframe.setAttribute('frameborder', '0');
		tempiframe.setAttribute('scrolling', 'no');
		var parent = document.body;
		var myiframe = parent.appendChild(tempiframe);
		function finish_copy_text_to_clipboard() {
			myiframe.contentDocument.designMode = "on";
			myiframe.contentDocument.body.innerHTML = text;
			var sel = myiframe.contentWindow.getSelection();
			sel.removeAllRanges();
			myiframe.contentWindow.focus();
			var range;
			if (typeof sel != "undefined") {
				try {
					range = sel.getRangeAt(0);
				}
				catch(e) {
					range = myiframe.contentDocument.createRange();
				}
			}
			else {
				range = myiframe.contentDocument.createRange();
			}
			range.selectNodeContents(myiframe.contentDocument.body);
			sel.addRange(range);
			try {
				myiframe.contentDocument.execCommand('copy', null, null);
			}
			catch(e) {
				alert("In Ihrem Browser müssen Sicherheitseinstellungen angepaßt werden, bitte wenden Sie sich an einen Systemadministrator.");
				return false;
			}
			parent.removeChild(myiframe);
			return true;
		};
		setTimeout(finish_copy_text_to_clipboard, 100);
		return true;
	}
	else{
		alert("Ihr Browser unterstützt diese Funktion leider nicht.");
	}
	return false;
}
 
Hierzu habe ich mal selbst eine Frage: Was genau musste man nochmal im Firefox in der Konfig machen, damit er diesen Code zulässt? Ich hab es echt vergessen. Weiß das noch jemand? Hab jetzt schon 45 Minuten gegoogelt aber überall steht was von Flash. Und ich bin mir sehr sicher, dass es - zumindest früher - auch ohne ging im Firefox.
 
Julian, dein Link aus dem anderen Thread für Firefox tut im neuen Firefox garnichts mehr. Mein Code zeigt wenigstens, dass es nicht erlaubt ist :)
Es handelt sich um eine geschlossene Benutzergruppe mit Anmeldung, Sicherheitsaspekte können wir hier gänzlich ausblenden.
Daher die Frage, ob sonst jemand weiß, wie man das im Firefox zulassen kann.
 
In about:config "clipboard.autocopy" auf true setzten (wenn man NoScript verwendet auch noch "noscript.allowClipboard").

Es handelt sich um eine geschlossene Benutzergruppe mit Anmeldung, Sicherheitsaspekte können wir hier gänzlich ausblenden.
Diese Aussage verstehe ich nicht. Mit dem deaktivierten Zugriff auf die Zwischenablage wird nicht die Seite, sondern der Benutzer geschützt. Oder surft die Benutzergruppe nur auf deiner Seite und sonst nirgendswo anders?

Ich bin immer noch der Meinung, dass die Zwischenablage nur vom Benutzer gefüllt werden darf und da auch nur mit dem, was er markiert hat und sieht... für warum wollt ihr das überhaupt machen?
 
Ach, du hast Recht, Korbinian. Das gilt ja dann nicht nur für meine Seite. Mist. OK, ich werde darauf hinweisen, sollen die selbst entscheiden.
Das machen wir für eine textarea deren Inhalt rüber kopiert werden können soll in ein anderes System des Benutzers.
 
In about:config "clipboard.autocopy" auf true setzten
Merke auch gerade, dass es garnicht funktioniert. Firefox zeigt trotz dieses Eintrags und Neustarts das Alert "In Ihrem Browser müssen Sicherheitseinstellungen angepaßt werden, bitte wenden Sie sich an einen Systemadministrator"

Liegt das am Code oder hat dieser Schalter vielleicht doch nicht mehr die erwünschte Wirkung?
 
Also bei mir funktionierts, wenn ich die beiden Schalter auf true setzte (hab' NoScript)...

Wenn der Text aus einer <textarea> kommt, können die Nutzer doch Strg+a, Strg+c machen - ist verlässlicher und lässt die Zwischenablage ganz unter der Kontrolle der Nutzer. Wenn du da eine Kommunikation aus dem Browser raus in ein anderes Programm machen willst, kann man das auch ohne die Zwischenablage machen (z.B. einem selbstdefinierten Protokol (da müsst die Nutzer aber in der Registry was eintragen) oder einer Downloadfunktionalität), wenn das andere Programm das zulässt.
 
Zurück
Oben