Follow along with the video below to see how to install our site as a web app on your home screen.
Anmerkung: This feature currently requires accessing the site using the built-in Safari browser.
einfach eine script-node einfügen und die src-property auf die datei setzenKann man innerhalb einer JS-Funktion eine andere Js-Datei nachladen?
uber einen request geht das auch, den empfangenen string dann einfach mit eval interpretieren.Oder ginge das so wie beim Xml laden?
$("button").click(function(){
$.getScript("files.js",eine_function_in_filejs());
});
$("button").click(function(){
$.getScript("files.js","eine_function_in_filejs()");
});
$('.external-link').click(function(){$.get("../css/jquery.leaveNotice.css", function(css) {$("head").append("<style type='text/css'>"+css+"</style>");});$.getScript("../js/jquery.leaveNotice.min.js","$('.external-link').leaveNotice({siteName:'Sie verlassen jetzt unsere offizielle, öffentlichen Website.'});");});
<a class="external-link" href=""> Extern Class Test</a>
$('.external-link').click(function(){$.get("../css/jquery.leaveNotice.css", function(css) {$("head").append("<style type='text/css'>"+css+"</style>");});$.getScript("../js/jquery.leaveNotice.min.js","$('.external-link').leaveNotice({siteName:'Sie verlassen jetzt unsere offizielle, öffentlichen Website.'});");});
Das herauszufinden hilft dir die Web-Konsole. Ein unverzichtbares Werkzeug bei der Webentwicklung!Habe ich irgendwo beim laden des Scripts oder im Code einen Fehler?
Äh... Also die Erwartungshaltung, dass dir jeder sofort am besten noch in der selben Minute helfen muss, ist etwas deplatziert. Schließlich haben wir ja auch noch anderes zu tun, verständlich?Niehmand Ahnung, woran es hängt, oder lasst ihr mich hängen?
$.getScript("js/irgend_ein_script.js", function(data, textStatus, jqxhr) {
console.log(data); // Dein Zeug
console.log(textStatus); // success
console.log(jqxhr.status); // 200
console.log("Load abgeschlossen.");
// 1
});
$('.external-link').click(function () {
$.get("../css/jquery.leaveNotice.css", function (css) {
$("head").append("<style type='text/css'>" + css + "</style>");
});
$.getScript("../js/jquery.leaveNotice.min.js", "$('.external-link').leaveNotice({siteName:'Sie verlassen jetzt unsere offizielle, öffentlichen Website.'});");
});
$.get()
und $.getScript()
verarbeiten die Serverantwort in einer Callback-Funktion. Diese definierst du entweder direkt in dem Aufruf (wie bei deinem Code) über eine anonyme Funktion, oder du definierst eine Funktionsreferenz.$('.external-link').click(function () {
$.get("../css/jquery.leaveNotice.css", function (css) {
$("head").append("<style type='text/css'>" + css + "</style>");
});
$.getScript("../js/jquery.leaveNotice.min.js", function () {
$('.external-link').leaveNotice({
siteName:'Sie verlassen jetzt unsere offizielle, öffentlichen Website.'
});
});
});
Wenn du dir deinen (formatierten) Code [...] mal genauer anschaust, wirst du feststellen, dass du von dier selbst hättest lernen können und dir die Lösung bei dir selbst hättest abgucken können.
Beide jQuery-Funktionen$.get()
und$.getScript()
verarbeiten die Serverantwort in einer Callback-Funktion. Diese definierst du entweder direkt in dem Aufruf (wie bei deinem Code) über eine anonyme Funktion, oder du definierst eine Funktionsreferenz.
Also ändern wir mal deinen Code um und fügen eine anonyme Funktion als Callback hinzu [...]
$('.external-link')
das/die Element(e) mit der Klasse external-link?$('.external-link').filter(function(){return true}).attr('rel','externalclass');
$('[rel="externalclass"]')
.click(function(){
$.get("../../Main-Theme/css/jquery.leaveNotice.css", function (css) {$("head").append("<style type='text/css'>" + css + "</style>");});
alert('test1');
$.getScript("../../Main-Theme/js/jquery.leaveNotice.min.js", function () {alert('test2');});
[... weiterer Code]
})
$('[rel="externalclass"]')
.click(function(){
$.get("../../Main-Theme/css/jquery.leaveNotice.css", function (css) {$("head").append("<style type='text/css'>" + css + "</style>");});
$.get("../../Main-Theme/js/jquery.leaveNotice.min.js", function (js) {$("head").append("<script src=" + js +"></script>");});
alert('test3');
$(this).leaveNotice({siteName:"LeaveNotice Test Page"});
})
oder ebenCode:$(function(){ $('a[rel=external]').leaveNotice({ siteName: 'My Cool Site' @}); });
Code:$('a.ex2').leaveNotice({ siteName:"LeaveNotice Test Page" });
$('a.external-link').leaveNotice({
siteName:"LeaveNotice Test Page"
});
$('.external-link').filter(function(){
$.get("../../Main-Theme/css/jquery.leaveNotice.css", function (css) {$("head").append("<style type='text/css'>" + css + "</style>");});
$.get("../../Main-Theme/js/jquery.leaveNotice.min.js", function (js) {$("head").append("<script src=" + js +"></script>");});
});
$('a.external-link').leaveNotice({
siteName:"LeaveNotice Test Page"
});
Jetz wird es so langsam etwas undurchsichtig. Kannst du nicht ein Minimalbeispiel machen, wo von mir aus nur 2 Links drinnen sind (intern und extern)? Was für Links (HTML-Code) sind das denn? Wie viele externe Links können denn vorhanden sein? Bedenke, dass wenn du bei jedem externen Link, der geklickt wird, dann auch das jQuery-Plugin geladen wird, was wie ich Denke zu einem Konflikt führen wird. Auch vom Traffic her wäre es somit sinnvoller das jQuery-Plugin nur einmalig zu laden, auch wenn du es überhauptnicht benötigst.Bis "alert('test1')" kommt das Script, aber den "alert('test2')" welcher ja kommen müsste, sobald die JS geladen ist, bringt es nicht mehr.
// page init
jQuery(function(){
$('a').filter(function(){return this.hostname && this.hostname !== location.hostname}).attr('rel','external');
$('.external-link').filter(function(){return true}).attr('rel','external');
$('[rel="external"]')
.click(function(e){e.preventDefault();externalLinkConfirm($(this).attr('href'))})
.each(function(){$(this).attr('title',$(this).prop('title')+' (external link)')}
);
});
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;
}
$('.external-link').filter(function(){
.click(function(
dabarthel schrieb:Vielleicht könnte man die gets in die "$('.external-link').filter(function(){GETS HERE}); " packen
Code:
$('.external-link').filter(function(){
$.get("../../Main-Theme/css/jquery.leaveNotice.css", function (css) {$("head").append("<style type='text/css'>" + css + "</style>");});
$.get("../../Main-Theme/js/jquery.leaveNotice.min.js", function (js) {$("head").append("<script src=" + js +"></script>");});
});
und dann mit
Code:
$('a.external-link').leaveNotice({
siteName:"LeaveNotice Test Page"
});
weitermachen?
extLinks = $('a[rel="external"]');
nach allen <a>-Tags suchen, welche eben dieses Attribut bekommen haben. In einer darauf folgenden if-Abfrage prüfst du dann ob externe Links mit diesem Attribut vorhanden sind und lädst dann deine Dateien (CSS und JavaScript) und initialisierst das jQuery-Plugin auf deine externen Links. Sollte so funktionieren (ungetestet):
// page init
jQuery(function(){
var extLinks;
$('a').filter(function(){return this.hostname && this.hostname !== location.hostname}).attr('rel','external');
$('.external-link').filter(function(){return true}).attr('rel','external');
extLinks = $('a[rel="external"]');
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(data, textStatus, jqxhr) {
extLinks.leaveNotice({
siteName:"LeaveNotice Test Page"
});
});
}
});
$('[rel="external"]')
.click( usw.
$('[rel="external"]')
.click( usw.
// page init
jQuery(function(){
var extLinks;
$('a').filter(function(){return this.hostname && this.hostname !== location.hostname}).attr('rel','external');
$('a[rel="external"]').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(data, textStatus, jqxhr) {
extLinks.leaveNotice({
siteName:"LeaveNotice Test Page"
});
});
}
});