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

[FRAGE] Externe Js-Datei innerhalb einer Funktion nachladen?

Benötigst du für die externen leaveNotice-Links dat Attribut rel="external"?

Verstehe jetzt die Frage nicht ganz.

Wir weisen doch mit
Code:
// page init
jQuery(function(){
	var extLinks;
	$('a').filter(function(){return this.hostname && this.hostname !== location.hostname}).attr('rel','external');

generell allen "A href" das Attribut "rel=external" zu, insofern denke ich schon, das ich das für die externen leavenotice-Links brauche.
(Es gibt ja auch externe Links die den leavenotice nutzen sollten)


Vielleicht hilft es ja, wenn ich zeig wie die verschiedenen Links aussehen.
Es gibt ja drei Arten links bei mir:

Code:
<a href="www.google.de"> ext Link mit leavenotice-Dialog </a>
<a href="/folder/index.html"> int Link ohne jeglichen Dialog </a>
<a href="www.jswelt.de" [B] class="external-link"[/B]> ext Link mit PlugIn-Dialog </a>

Es gibt zwar auch noch Links mit einer Klasse "internal-link" aber die spielen hier keine Rolle.
 
Zuletzt bearbeitet:
Verstehe jetzt die Frage nicht ganz.
Ich wollte eigentlich nur wissen, wofür du dieses Attribut noch benötigst. Oder hast du das nur eingeführt, um das jQuery-Plugin benutzen zu können?

generell allen "A href" das Attribut "rel=external" zu, insofern denke ich schon, das ich das für die externen leavenotice-Links brauche.
(Es gibt ja auch externe Links die den leavenotice nutzen sollten)
Was denn jetzt? Brauchen oder benutzen wollen?

Vielleicht hilft es ja, wenn ich zeig wie die verschiedenen Links aussehen.
Es gibt ja drei Arten links bei mir:

Code:
1 - <a href="www.google.de"> ext Link mit leavenotice-Dialog </a>
2 - <a href="/folder/index.html"> int Link ohne jeglichen Dialog </a>
3 - <a href="www.jswelt.de" [B]class="external-link"[/B]> ext Link mit PlugIn-Dialog </a>

Es gibt zwar auch noch Links mit einer Klasse "internal-link" aber die spielen hier keine Rolle.
Die Links stehen so schon in deinem Dokument, ja? Und bis jetzt hattest du die Links 1 und 3 mit deiner IST-Lösung betrieben? Und nun sollem nur alle Links nach dem Schema 3 abgeändert werden, um hierfür das jQuery-Plugin zu benutzen?
 
Das Attribut "rel='external'" habe ich nicht nur eingeführt, um das PlugIn benutzen zu können.

Die Links 1 bis 3 (stehen alle so schon in meinen Dokumenten) habe ich bisher mit meiner Ist-Lösung betrieben.

WICHTIG:
Die Links 1 und 2 sollen auch weiterhin mit der Ist-Lösung arbeiten, NUR Link 3 soll das PlugIn verwenden.

(Die Links 1 bis 3 sind nur Beispiel zur Verdeutlichung, welche Arten von Links ich verwende. Natürlich kann es auch Dokumente geben die mehr als 3 Links haben, die nur Links vom Typ Link 1 und Link 2, nur von Typ Link 3 enthalten, oder eben alle 3 Typen. )

Die Links in den Dokumenten sollen NICHT verändert werden, sondern in allen Formen (Typ 1, Typ 2 und Typ 3) erhalten bleiben!

Die einzelnen Link-Arten sollen nur unterschiedlich behandelt werden, Typ 1 und 2 sollen den Ist-Zustand (so das für Typ 1 "externallinkconfirm" aufgerufen wird, während für Typ 2 direkt zum Ziel des Link führt) nutzen, und Typ 3 soll das PlugIn verwenden.

- - - Aktualisiert - - -

nochmals, NUR Links, die bereits die Klasse "external-link" haben, also wie Link 3, sollen das PlugIn nutzen, alle anderen links sollen den Ist-Zustand nutzen, so das für interne Links gar kein Dialog, für externe Links ohne diese Klasse, "externallinkconfirm" aufgerufen wird und für Links mit dieser Klasse das PlugIn genutzt wird.

In den Dokumenten sind die links fertig formatiert, haben also falls nötig die entsprechende Klasse.
 
Zuletzt bearbeitet:
Hättest du das schon wesentlich früher so beschrieben, wie in den letzten beiden Posts, wäre die Diskusion einfacher ausgefallen.
Mein Beispiel aus Post #20 macht doch schon fast genau das was du willst. Du musst nur die erste Kollektion mit einem .not('a.external-link') reduzieren, damit der Link Schema 3 nicht behandelt wird:
Code:
function externalLinkConfirm(url) {
	var extmsg = "Sie verlassen jetzt unsere offizielle, öffentlichen Website. Bitte beachten Sie, dass diese Drittanbieter-Website nicht von uns kontrolliert oder von unsere Datenschutzrichtlinie betroffen ist! \nWir sind nicht für den Inhalt dieser Drittanbieter-Website verantwortlich und können diesen nicht beeinflussen. \n\nKlicken Sie [OK] um zu " + url + " zu gelangen.";
	if (confirm(extmsg)) {
		location.href = url;
	}
}

// page init
jQuery(function () {
	var extLinks;
	$('a').filter(function () {
		return this.hostname && this.hostname !== location.hostname;
	}).attr('rel', 'external');
	$('a[rel="external"]').not('a.external-link')
		.click(function (e) {
			e.preventDefault();
			externalLinkConfirm($(this).attr('href'));
		}).each(function () {
			$(this).attr('title', $(this).prop('title') + ' (external link)');
		});
	extLinks = $('a.external-link');
	if (extLinks.length > 0) {
		$.get("../../Main-Theme/css/jquery.leaveNotice.css", function (css) {
			$("head").append("<style type='text/css'>" + css + "<\/style>");
		});
		$.getScript("../../Main-Theme/js/jquery.leaveNotice.min.js", function () {
			extLinks.leaveNotice({
				siteName: "LeaveNotice Test Page"
			});
		});
	}
});
 
Sorry, aber ehrlich gesagt konnte ich dein Bsp aus Post 20 übers WE nicht testen.
Mir war nur aufgefallen, das ein Stück vom Ist-Zustand fehlt.

Danke für deine Geduld und Hilfe, ist manchmal gar nicht so einfach alles richtig zu formulieren.

Werde deinen neuen Code am Montag testen und mich danb hier melden, ob alles klappt.
Dir ein schönes Wochenende.
 
@miniA4kuser: sollte die .leaveNotice nicht im .click() der a.external-link ausgeführt werden und nicht im Callback, wenn die .js geladen wurde?

PS: das Ganze mit rel=external ist eigentlich unnötig...
 
@miniA4kuser: sollte die .leaveNotice nicht im .click() der a.external-link ausgeführt werden und nicht im Callback, wenn die .js geladen wurde?
Doch und das wird sie ja auch. Das was du in dem Callback meinst ist nur die Initialisierung nachdem das LeaveNotice-Plugin nachgeladen (eingebunden) wurde. Dadurch wird dann der .click() auf alle a.external-link registriert und bei Betätigung das LeaveNotice ausgeführt.


PS: das Ganze mit rel=external ist eigentlich unnötig...
Für die LeaveNotice auf jeden Fall. Hatte ich auch schon angesprochen. Laut dbarthel wird das aber auch noch anderweitig benötigt.

- - - Aktualisiert - - -

Update: Es funktioniert jetzt mit dem letzten Code.
Der aus Post #24?
Schön, aber in deine Testlinks hast du die Anpassung noch nicht gemacht!? Dort funktioniert es noch immer nicht, weil die Pfade noch immer falsch sind.

PS: Warum verwendest du unterschiedliche DOCTYPE's ???
 
Für die LeaveNotice auf jeden Fall. Hatte ich auch schon angesprochen. Laut dbarthel wird das aber auch noch anderweitig benötigt.

wird es ja auch.

Der aus Post #24?
Schön, aber in deine Testlinks hast du die Anpassung noch nicht gemacht!? Dort funktioniert es noch immer nicht, weil die Pfade noch immer falsch sind.

Ja der aus Post 24 und sollte auf dem Testlink Testseite

auch funktionieren, lag an einem Fehler in der JS-Datei, den ich nie so richtig lokalisieren konnte, habe die ganze Datei nochmal wie folgt neu geschrieben:

Code:
// page init
jQuery(function(){
	
	//initWorkBox();
	
	jQuery('input, textarea').placeholder();
	initTabNav();
	
	/* External Links */
	// All links that are external to our domain will launch the external link disclaimer
	var extLinks;
	$('a').filter(function () {
		return this.hostname && this.hostname !== location.hostname;
	}).attr('rel', 'external');
	$('a[rel="external"]').not('a.external-link')
		.click(function (e) {
			e.preventDefault();
			externalLinkConfirm($(this).attr('href'));
		}).each(function () {
			$(this).attr('title', $(this).prop('title') + ' (external link)');
		});
	extLinks = $('a.external-link');
	if (extLinks.length > 0) {
		$.get("../../Main-Theme/css/jquery.leaveNotice.css", function (css) {
			$("head").append("<style type='text/css'>" + css + "<\/style>");
		});
		$.getScript("../../Main-Theme/js/jquery.leaveNotice.min.js", function () {
			extLinks.leaveNotice({
				siteName: "Lebenslust",
				exitMessage:"<b><big>Sie verlassen jetzt unsere offizielle, öffentlichen Website!</big></b><p>Bitte beachten Sie, dass diese Drittanbieter-Website nicht von uns kontrolliert oder von unsere Datenschutzrichtlinie betroffen ist!<br/>Wir sind nicht für den Inhalt dieser Drittanbieter-Website verantwortlich und können diesen nicht beeinflussen.</p>",
				preLinkMessage:"<p>Sie werden jetzt zu:<br/><strong>{URL}</strong> weitergeleitet.</p>",
				timeOut:10000

			});
		});
	}
		

	/* Plug-in List */
	$('#plugins ul li,#plugins').hide();
	$('#plugins li').each(function(){		
		if($('[href*=".' + $(this).data('plugin') + '"]').exists()){
			$('#plugins').show();
			$(this).show();
		}
	});

und plötzlich funktionierte es, ohne das ich die Pfade geändert habe, da die ja auch stimmen.

PS: Warum verwendest du unterschiedliche DOCTYPE's ???

ich nehme an, du meinst, das die Linktest-Seite nur
Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
hat, während der Colorbox-Test
Code:
<!DOCTYPE html>
<!--[if lt IE 7]> 
<html class="no-js lt-ie9 lt-ie8 lt-ie7" lang="en"> 
<![endif]--><!--[if IE 7]>
<html class="no-js lt-ie9 lt-ie8" lang="en">
<![endif]--><!--[if IE 8]>
<html class="no-js lt-ie9" lang="en">
<![endif]--><!--[if gt IE 8]><!-->
<html xmlns="http://www.w3.org/1999/xhtml" class="no-js" lang="en" xml:lang="en">
<!--<![endif]-->
<head>

hat.
Der Grund dafür ist, das ich im Fall des Linktest auf die komplette Syntax zum Testen erstmal verzichtet habe, war ja nur ein Testlink, den ich extra fürs Forum angelegt habe.
 
Zuletzt bearbeitet:
Doch und das wird sie ja auch. Das was du in dem Callback meinst ist nur die Initialisierung nachdem das LeaveNotice-Plugin nachgeladen (eingebunden) wurde. Dadurch wird dann der .click() auf alle a.external-link registriert und bei Betätigung das LeaveNotice ausgeführt.
OK - hatte mir das Plugin nicht gut genug angesehen... dachte irgendwie, dass beim Aufruf von .leaveNotice() direkt die Meldung kommt...
 
Zurück
Oben