1// var contentClass = "#content" 2// var allElements=[] 3// var xVar = 0; 4// var runExecution = true 5// var first, second 6// var i, x; 7 8// jQuery(document).ready(function () { 9// jQuery('.l-dvv-toolbar .tb-menu li a[target="checkAlt"]').addClass('alt-checker').removeAttr('target') 10// jQuery('.l-dvv-toolbar .tb-menu li a[target="checkLink"]').addClass('link-checker').removeAttr('target') 11 12// jQuery('a.alt-checker').on('click', function(e){ 13// e.preventDefault(); 14// console.log('starting to check the alternative text of images') 15 16// //check the alt texts 17// checkElement('img', '.l-page') 18// checkElement('img', 'body > .mm-menu') 19// }) 20 21// jQuery('a.link-checker').on('click', function(e){ 22// e.preventDefault(); 23// console.log('starting to check the links') 24// addLoader() 25 26// //check Dead Links 27// //Head anpassen wegen externe Linkaufrufe 28// if (window.location.protocol.indexOf('https') == 0){ 29// var el = document.createElement('meta') 30// el.setAttribute('http-equiv', 'Content-Security-Policy') 31// el.setAttribute('content', 'upgrade-insecure-requests') 32// document.head.append(el) 33// } 34 35// if(stopFunction){ 36// stopFunction = false 37// } 38// else{ 39// checkLink('a[href^="/"]', '.l-page', 'intern') 40// checkLink('a[href^="http"]', '.l-page', 'extern') 41// //checkLink('a[href^="/"]', 'body > .mm-menu', 'intern') 42// //checkLink('a[href^="http"]', 'body > .mm-menu', 'extern') 43// } 44// }) 45// }); 46 47// function addLoader(){ 48// if(jQuery('.checkerLoader').length == 0){ 49// jQuery('<div class="checkerLoader"><div class="loader"></div><div class="info"></div></div>').insertBefore(jQuery('.l-page')) 50// jQuery('.checkerLoader .info').append('<p class="internLinksChecker">Prüfe interner Link <span class="current"></span> von <span class="all"></span></p>') 51// jQuery('.checkerLoader .info').append('<p class="externLinksChecker">Prüfe externer Link <span class="current"></span> von <span class="all"></span></p>') 52// jQuery('.checkerLoader .info').append('<button class="btn stopLinksChecker">Prüfung abbrechen</button>') 53// jQuery('.checkerLoader .info').append('<p class="infoColors">Defekte Links werden blau markiert. Funktionierte Links werden grün markiert.</p>') 54// } 55// } 56 57// //Alternativtexte von Bilder prüfen 58// function checkElement(element, parent){ 59// jQuery(element, parent).each(function(){ 60// var alt = jQuery(this).attr('alt') 61// var imgSrc = jQuery(this).attr('src') 62// var imgName = imgSrc.substr(imgSrc.lastIndexOf('/') + 1) 63// var res = '' 64// var context = '' 65// if(alt == ""){ 66// res = "nicht erfuellt" 67// context = "kein Alt-text vorhanden" 68// } 69// if(alt.length < 7 && alt.length > 0){ 70// res = "teilweise erfuellt" 71// context = "Alt-text sehr kurz (" + alt.length + " Zeichen)" 72// } 73// if(alt.length > 80){ 74// res = "teilweise erfuellt" 75// context = "Alt-text etwas lang (" + alt.length + " Zeichen)" 76// } 77// if(context != ""){ 78// jQuery(this).parent().append('<p class="bf-trigger--child">' + context + '</p>') 79// jQuery(this).parent().addClass('bf-trigger') 80// } 81// }) 82// } 83 84// //Externe Einbindungen aus Quellen nehmen und am Ende der Seite einfügen 85// // function checkFiles(arr, currentHost){ 86// // $('.l-footer').append('<ul class="externFiles"></ul>') 87// // setTimeout(function() { 88// // const resources = performance.getEntriesByType("resource"); 89// // const currentHostname = currentHost; 90// // var val = ""; 91// // resources.forEach((resource) => { 92// // const url = new URL(resource.name) 93// // if (url.host !== currentHostname) { 94// // arr.push(resource.name) 95// // val = String(resource.name) 96// // $('.externFiles').append('<li>"' + val + '"</li>') 97// // } 98// // }); 99// // }, 100); 100// // } 101 102// //Jeden Link aufrufen und checken 103// function checkLink(element, page, version){ 104// //Array mit allen vorhandenen URLs auf der Seite erstellen 105// console.log(jQuery(element, page)) 106// var urlElements = []; 107// jQuery(element, page).each(function(x){ 108// if(jQuery(this).attr('href') != 'undefined'){ 109// urlElements.push(jQuery(this).attr('href')) 110// } 111// }) 112// for (var i=0; i<urlElements.length; i++){ 113// checkURLs(i, urlElements, version) 114// } 115// } 116 117// var statusLoop1 = false 118// var statusLoop2 = false 119// var stopFunction = false
120// function checkURLs(zVar, urlElements, version){ 121// setTimeout(function() { 122// if(!stopFunction){ 123// console.log('in for loop: ', zVar, urlElements[zVar], version) 124// jQuery('.checkerLoader .stopLinksChecker').on('click', function(e){ 125// jQuery('.checkerLoader').remove() 126// stopFunction = true 127// }); 128 129// if(version == "intern"){ 130// console.log('in intern') 131// checkStatusIntern(urlElements[zVar]) 132// jQuery('.checkerLoader .internLinksChecker .current').text(zVar + 1) 133// jQuery('.checkerLoader .internLinksChecker .all').text(urlElements.length) 134// if((zVar + 1) == urlElements.length){ 135// statusLoop1 = true 136// jQuery('.checkerLoader .internLinksChecker').text('Alle interne Links wurden geprüft') 137// } 138// } 139// if(version == "extern"){ 140// console.log('in extern') 141// checkStatusExtern(urlElements[zVar]) 142// jQuery('.checkerLoader .externLinksChecker .current').text(zVar + 1) 143// jQuery('.checkerLoader .externLinksChecker .all').text(urlElements.length) 144// if((zVar + 1) == urlElements.length){ 145// statusLoop2 = true 146// jQuery('.checkerLoader .externLinksChecker').text('Alle externe Links wurden geprüft') 147// } 148// } 149// console.log((zVar + 1), urlElements.length, statusLoop1, statusLoop2) 150 151// if(statusLoop1 && statusLoop2){ 152// jQuery('.checkerLoader').remove() 153// } 154// else{ 155// addLoader(); 156// } 157// } 158// }, 5000 * zVar); 159// } 160 161// //Interne Links checken 162// function checkStatusIntern(link){ 163// console.log('in intern checking') 164// return jQuery.ajax({ 165// type: 'GET', 166// dataType: 'json', 167// contentType: 'application/json; charset=utf-8', 168// data: {}, 169// url: link, 170// error: function (jqXHR, textStatus, errorThrown) { 171// if(jqXHR.status == 200){ 172// console.log("worked") 173// jQuery('a[href="' + link + '"]').css('color', 'green') 174// jQuery('a[href="' + link + '"] *').css('color', 'green') 175// jQuery('a[href="' + link + '"]').css('border', '2px solid green') 176// jQuery('a[href="' + link + '"]').css('font-weight', 'bold') 177// } 178// else{ 179// console.log("defect",jQuery('a[href="' + link + '"]')) 180// jQuery('a[href="' + link + '"]').css('color', 'blue') 181// jQuery('a[href="' + link + '"] *').css('color', 'blue') 182// jQuery('a[href="' + link + '"]').css('border', '2px solid blue') 183// jQuery('a[href="' + link + '"]').css('font-weight', 'bold') 184// } 185// }, 186// success: function (data) { 187// } 188// }); 189// } 190 191// //Externe Links checken 192// function checkStatusExtern(link){ 193// console.log('in extern checking') 194// return jQuery.ajax({ 195// type: 'GET', 196// data: {}, 197// dataType: 'jsonp', 198// url: link, 199// error: function (jqXHR, textStatus, errorThrown) { 200// if(jqXHR.status == 200){ 201// console.log("worked") 202// jQuery('a[href="' + link + '"]').css('color', 'green') 203// jQuery('a[href="' + link + '"] *').css('color', 'green') 204// jQuery('a[href="' + link + '"]').css('border', '2px solid green') 205// jQuery('a[href="' + link + '"]').css('font-weight', 'bold') 206// } 207// else{ 208// console.log("defect") 209// jQuery('a[href="' + link + '"]').css('color', 'blue') 210// jQuery('a[href="' + link + '"] *').css('color', 'blue') 211// jQuery('a[href="' + link + '"]').css('border', '2px solid blue') 212// jQuery('a[href="' + link + '"]').css('font-weight', 'bold') 213// } 214// }, 215// success: function (data) { 216// } 217// }); 218// } 219 220var contentClass = ".l-page" 221var allElements=[] 222var xVar = 0; 223var runExecution = true 224var runExecutionAlt = true 225var first, second 226var i, x; 227jQuery(document).ready(function () { 228 jQuery('.l-dvv-toolbar .tb-menu li a[target="checkAlt"]').addClass('alt-checker').removeAttr('target') 229 jQuery('.l-dvv-toolbar .tb-menu li a[target="checkLink"]').addClass('link-checker').removeAttr('target') 230 jQuery('a.alt-checker').on('click', function(e){
231 if(runExecutionAlt == false){ 232 if(finishExeAlt){ 233 jQuery('.loader-container').css('display', 'none') 234 jQuery('.loader-container').css('visibility', 'hidden') 235 jQuery('.loader-container').attr('aria-hidden', 'true') 236 237 jQuery('script.checkStatus').remove() 238 jQuery('.check-modal-alt').addClass('show') 239 240 jQuery('.check-modal-alt').removeClass('hide') 241 } 242 else{ 243 runExecutionAlt = true 244 jQuery('.loader-container').css('display', 'flex') 245 jQuery('.loader-container').css('visibility', 'visible') 246 jQuery('.loader-container').attr('aria-hidden', 'false') 247 } 248 } 249 else{ 250 jQuery('.loader-container').remove() 251 console.log('inside else') 252 checkBrowser() 253 runExecutionAlt = true 254 allElements=[] 255 xVar=0 256 first=false 257 second=false 258 e.preventDefault(); 259 console.log('starting the checking') 260 261 //check the alt texts 262 jQuery('body').append('<div class="check-modal check-modal-alt hide"><div class="close"><button class="btn" aria-label="Modal schlieÃen" title="Modal schlieÃen">x</button></div><div class="check-modal--inner"></div><div class="openNewWindow"><button class="btn" aria-label="Ergebniss in neuem Fenster öffnen" title="Ergebniss in neuem Fenster öffnen">Ergebniss in neuem Fenster öffnen</button></div>') 263 jQuery('.check-modal-alt .check-modal--inner').append('<h3>Bilder ohne Alternativtexte / mit zu kurzen/langen Alternativtexte:</h3><ul class="defectAlt"></ul>') 264 checkElement('img:not(.leaflet-tile, .leaflet-marker-icon)', contentClass) 265 266 // //check Extern Files 267 // var arr=[] 268 // var currentHost = 'aikcms7.kvnbw.de' //currenHost anpassen 269 // jQuery('.check-modal--inner').append('<h3>Externe Einbindungen: </h3><ul class="externFiles"></ul>') 270 // checkFiles(arr, currentHost); 271 272 jQuery('body').append('<div class="loader-container" aria-hidden="false"><div class="spinner"></div><p>Ihre Seite wird gerade geprüft, bitte warten Sie.</p></div>') 273 jQuery('.loader-container').append('<div id="myProgress"><div id="myBar"></div></div><div class="stopExe"><button class="btn" aria-label="Ausführung stoppen" title="Ausführung stoppen">Ausführung stoppen</button></div>') 274 jQuery('<p class="loadingPages"></p>').insertAfter(jQuery('#myProgress')); 275 jQuery("#myBar").append('<span>0%</span>') 276 jQuery('.check-modal-alt .close').on('click', function(){ 277 jQuery('.check-modal-alt').removeClass('show') 278 jQuery('.check-modal-alt').addClass('hide') 279 var icon = jQuery('a.bfo-checker span') 280 jQuery('a.bfo-checker').text('Ergebnisse der Prüfung anzeigen') 281 jQuery('a.bfo-checker').prepend(icon) 282 }) 283 jQuery('.stopExe').click(function(){ 284 runExecutionAlt = false; 285 //const loaderContainer = document.querySelector('.loader-container'); 286 //loaderContainer.parentElement.removeChild(loaderContainer); 287 //jQuery('script.checkStatus').remove() 288 jQuery('.loader-container').css('display', 'none') 289 jQuery('.loader-container').css('visibility', 'hidden') 290 jQuery('.loader-container').attr('aria-hidden', 'true') 291 var icon = jQuery('a.bfo-checker span') 292 jQuery('a.bfo-checker').text('Prüfung aktueller Seite fortsetzen') 293 jQuery('a.bfo-checker').prepend(icon) 294 }) 295 } 296 }) 297 jQuery('a.link-checker').on('click', function(e){ 298 if(runExecution == false){ 299 if(finishExe){ 300 jQuery('.loader-container').css('display', 'none') 301 jQuery('.loader-container').css('visibility', 'hidden') 302 jQuery('.loader-container').attr('aria-hidden', 'true') 303 304 jQuery('script.checkStatus').remove() 305 jQuery('.check-modal-link').addClass('show') 306 307 jQuery('.check-modal-link').removeClass('hide') 308 } 309 else{ 310 runExecution = true 311 jQuery('.loader-container').css('display', 'flex') 312 jQuery('.loader-container').css('visibility', 'visible') 313 jQuery('.loader-container').attr('aria-hidden', 'false') 314 } 315 } 316 else{ 317 jQuery('.loader-container').remove() 318 console.log('inside else') 319 checkBrowser() 320 runExecution = true 321 allElements=[] 322 xVar=0 323 first=false 324 second=false 325 e.preventDefault(); 326 console.log('starting the checking') 327 328 //check Dead Links 329 //Head anpassen wegen externe Linkaufrufe 330 if (window.location.protocol.indexOf('https') == 0){ 331 var el = document.createElement('meta') 332 el.setAttribute('http-equiv', 'Content-Security-Policy') 333 el.setAttribute('content', 'upgrade-insecure-requests') 334 document.head.append(el) 335 } 336 337 jQuery('body').append('<div class="check-modal check-modal-link hide"><div class="close"><button class="btn" aria-label="Modal schlieÃen" title="Modal schlieÃen">x</button></div><div class="check-modal--inner"></div><div class="openNewWindow"><button class="btn" aria-label="Ergebniss in neuem Fenster öffnen" title="Ergebniss in neuem Fenster öffnen">Ergebniss in neuem Fenster öffnen</button></div>') 338 jQuery('.check-modal-link .check-modal--inner').append('<h3>Defekte Links:</h3><p>Ist die URL eine Weiterleitung, dann kann es zu einem "falsch positiven" Ergebniss kommen. Da Weiterleitungen durch das Skript nicht erkannt werden können.</p><ul class="defectLinks"></ul>') 339 340 jQuery('a[href^="/"]', contentClass).each(function(x){ 341 if(jQuery(this).attr('href') != 'undefined'){ 342 allElements.push(jQuery(this).attr('href')) 343 } 344 }) 345 jQuery('a[href^="http"]', contentClass).each(function(x){ 346 if(jQuery(this).attr('href') != 'undefined'){ 347 allElements.push(jQuery(this).attr('href')) 348 } 349 }) 350 checkLink('a[href^="/"]', contentClass, 'intern', allElements) 351 checkLink('a[href^="http"]', contentClass, 'extern', allElements) 352 353 jQuery('body').append('<div class="loader-container" aria-hidden="false"><div class="spinner"></div><p>Ihre Seite wird gerade geprüft, bitte warten Sie.</p></div>') 354 jQuery('.loader-container').append('<div id="myProgress"><div id="myBar"></div></div><div class="stopExe"><button class="btn" aria-label="Ausführung stoppen" title="Ausführung stoppen">Ausführung stoppen</button></div>') 355 jQuery('<p class="loadingPages"></p>').insertAfter(jQuery('#myProgress')); 356 jQuery("#myBar").append('<span>0%</span>') 357 jQuery('.check-modal-link .close').on('click', function(){ 358 jQuery('.check-modal-link').removeClass('show') 359 jQuery('.check-modal-link').addClass('hide') 360 var icon = jQuery('a.bfo-checker span') 361 jQuery('a.bfo-checker').text('Ergebnisse der Prüfung anzeigen') 362 jQuery('a.bfo-checker').prepend(icon) 363 }) 364 jQuery('.stopExe').click(function(){ 365 runExecution = false; 366 //const loaderContainer = document.querySelector('.loader-container'); 367 //loaderContainer.parentElement.removeChild(loaderContainer); 368 //jQuery('script.checkStatus').remove() 369 jQuery('.loader-container').css('display', 'none') 370 jQuery('.loader-container').css('visibility', 'hidden') 371 jQuery('.loader-container').attr('aria-hidden', 'true') 372 var icon = jQuery('a.bfo-checker span') 373 jQuery('a.bfo-checker').text('Prüfung aktueller Seite fortsetzen') 374 jQuery('a.bfo-checker').prepend(icon) 375 }) 376 } 377 }); 378}); 379 380function checkBrowser(){ 381 if(navigator.userAgent.indexOf("Chrome") != -1 ){ 382 383 } 384 else{ 385 alert('Ihr momentaner Browser wird nicht unterstützt, bitte wechseln Sie zum Chrome') 386 // create new exception type: 387 function FatalError(){ Error.apply(this, arguments); this.name = "FatalError"; } 388 FatalError.prototype = Object.create(Error.prototype); 389 throw new FatalError("Falscher Browser"); 390 } 391} 392 393//Alternativtexte von Bilder prüfen 394function checkElement(element, parent){ 395 if(runExecutionAlt){ 396 jQuery(element, parent).each(function(){ 397 console.log(runExecution) 398 var alt = jQuery(this).attr('alt') 399 var imgSrc = jQuery(this).attr('src') 400 var imgName = imgSrc.substr(imgSrc.lastIndexOf('/') + 1) 401 var res = '' 402 var context = '' 403 if(alt == ""){ 404 res = "nicht erfuellt" 405 context = "kein Alt-text vorhanden" 406 console.log(imgName) 407 } 408 if(alt.length < 7 && alt.length > 0){ 409 res = "teilweise erfuellt" 410 context = "Alt-text sehr kurz (" + alt.length + " Zeichen)" 411 console.log(imgName) 412 } 413 if(alt.length > 80){ 414 res = "teilweise erfuellt" 415 context = "Alt-text etwas lang (" + alt.length + " Zeichen)" 416 console.log(imgName) 417 } 418 if(context != ""){ 419 jQuery(this).parent().append('<p class="bf-trigger--child">' + context + '</p>') 420 jQuery(this).parent().addClass('bf-trigger') 421 jQuery('.defectAlt').append('<li><strong>Bild:</strong> ' + imgName + '<br><strong>' + res + ':</strong> ' + context + '</li>') 422 423 } 424 }) 425 finishExeAlt = true; 426 runExecutionAlt = false; 427 setTimeout(function() { 428 jQuery('.loader-container').css('display', 'none') 429 jQuery('.loader-container').css('visibility', 'hidden') 430 jQuery('.loader-container').attr('aria-hidden', 'true') 431 432 jQuery('script.checkStatus').remove() 433 jQuery('.check-modal-alt').addClass('show') 434 435 jQuery('.check-modal-alt').removeClass('hide') 436 437 // if(jQuery('.defectAlt').children().length == 0){ 438 // jQuery('.defectAlt').append('<li>keine Bilder ohne Alternativtexte gefunden</li>') 439 // } 440 // if(jQuery('.externFiles').children().length == 0){ 441 // jQuery('.externFiles').append('<li>keine Externe Einbindungen gefunden</li>') 442 // } 443 if(jQuery('.defectLinks').children().length == 0){ 444 jQuery('.defectLinks').append('<li>keine Defekten Links gefunden</li>') 445 } 446 447 jQuery('.openNewWindow button').click(function(){ 448 var opened = window.open(""); 449 opened.document.write("<html><head><title>Ergebnisse</title></head><body>" + jQuery('.check-modal-alt .check-modal--inner')[0].innerHTML + "</body></html>"); 450 }) 451 }, 2000); 452 } 453} 454 455// //Externe Einbindungen aus Quellen nehmen und am Ende der Seite einfügen 456// function checkFiles(arr, currentHost){ 457// if(runExecution){ 458// setTimeout(function() { 459// const resources = performance.getEntriesByType("resource"); 460// const currentHostname = currentHost; 461// var val = "";
462// resources.forEach((resource) => { 463// const url = new URL(resource.name) 464// if (url.host !== currentHostname) { 465// arr.push(resource.name) 466// val = String(resource.name) 467// jQuery('.externFiles').append('<li>"' + val + '"</li>') 468// } 469// }); 470// }, 100); 471// } 472// } 473 474var currentValI=0; 475var currentValX=0; 476 477var val1=false; 478var val2=false; 479var finishExe = false; 480var finishExeAlt = false; 481var interLength, externLength 482 483//Jeden Link aufrufen und checken 484function checkLink(element, page, version, allElements){ 485 //Array mit allen vorhandenen URLs auf der Seite erstellen 486 if(runExecution){ 487 console.log('inside') 488 var urlElements = []; 489 jQuery(element, page).each(function(x){ 490 if(jQuery(this).attr('href') != 'undefined'){ 491 urlElements.push(jQuery(this).attr('href')) 492 } 493 }) 494 } 495 496 console.log(urlElements != undefined) 497 498 if(version == "intern"){ 499 var arrLength = urlElements.length * 2 500 if(urlElements.length == 0){ 501 first=true 502 checkURLs(currentValI, urlElements, version, allElements) 503 } 504 for (i=0; i<=arrLength; i++){ 505 if(finishExe){ 506 break; 507 } 508 setTimeout(function() { 509 if(runExecution){ 510 console.log('inside ' + currentValI + ' and ' + i, urlElements) 511 if(currentValI < urlElements.length){ 512 checkURLs(currentValI, urlElements, version, allElements) 513 currentValI = currentValI + 1 514 } 515 if(finishExe){ 516 console.log('done with all Links') 517 } 518 if(first){ 519 console.log('done with all intern Links') 520 } 521 } 522 }, 5000 * i); 523 } 524 } 525 526 if(version == "extern"){ 527 var arrLength = urlElements.length * 2 528 if(urlElements.length == 0){ 529 second=true 530 checkURLs(currentValI, urlElements, version, allElements) 531 } 532 for (x=0; x<arrLength; x++){ 533 if(finishExe){ 534 break; 535 } 536 setTimeout(function() { 537 if(runExecution){ 538 console.log('inside ' + currentValX + ' and ' + x) 539 if(currentValX < urlElements.length){ 540 checkURLs(currentValX, urlElements, version, allElements) 541 currentValX = currentValX + 1 542 } 543 if(finishExe){ 544 console.log('done with all Links') 545 } 546 if(second){ 547 console.log('done with all extern Links') 548 } 549 } 550 }, 5000 * x); 551 } 552 } 553} 554var percentPrev 555 556//Progress anzeigen 557function showProgress(i, url){ 558 var currentPage = i + 1 559 if(currentPage < url.length){ 560 percentPrev = (100 / url.length) * (currentPage) 561 document.getElementById("myBar").style.width = percentPrev + '%' 562 jQuery('#myBar span').text(Math.round(percentPrev) + '%') 563 } 564 if(currentPage == url.length){ 565 document.getElementById("myBar").style.width = 100 + '%' 566 jQuery('#myBar span').text('100%') 567 } 568} 569 570 571function checkURLs(zVar, urlElements, version, allURLs){ 572 console.log('test') 573 574 console.log('Checking: ', version, zVar, urlElements[zVar], runExecution) 575 576 if(version == "intern"){ 577 val1=false; 578 checkStatusIntern(urlElements[zVar]) 579 console.log(zVar, urlElements.length) 580 if(zVar == (urlElements.length-1) || urlElements.length == 0){ 581 console.log('done intern') 582 first = true 583 } 584 } 585 if(version == "extern"){ 586 jQuery('script.checkStatus').remove() 587 if(urlElements.length != 0){ 588 val2=false; 589 checkStatusExtern(urlElements[zVar]) 590 } 591 if(zVar == (urlElements.length-1) || urlElements.length == 0){ 592 console.log('done extern') 593 second = true 594 } 595 } 596 xVar = xVar + 1 597 showProgress(xVar, allURLs) 598 if(first && second){ 599 finishExe = true; 600 runExecution = false; 601 setTimeout(function() { 602 jQuery('.loader-container').css('display', 'none') 603 jQuery('.loader-container').css('visibility', 'hidden') 604 jQuery('.loader-container').attr('aria-hidden', 'true') 605 606 jQuery('script.checkStatus').remove() 607 jQuery('.check-modal-link').addClass('show') 608 609 jQuery('.check-modal-link').removeClass('hide') 610 611 // if(jQuery('.defectAlt').children().length == 0){ 612 // jQuery('.defectAlt').append('<li>keine Bilder ohne Alternativtexte gefunden</li>') 613 // } 614 // if(jQuery('.externFiles').children().length == 0){ 615 // jQuery('.externFiles').append('<li>keine Externe Einbindungen gefunden</li>') 616 // } 617 if(jQuery('.defectLinks').children().length == 0){ 618 jQuery('.defectLinks').append('<li>keine Defekten Links gefunden</li>') 619 } 620 621 jQuery('.openNewWindow button').click(function(){ 622 var opened = window.open(""); 623 opened.document.write("<html><head><title>Ergebnisse</title></head><body>" + jQuery('.check-modal-link .check-modal--inner')[0].innerHTML + "</body></html>"); 624 }) 625 }, 2000); 626 } 627} 628 629//Interne Links checken 630function checkStatusIntern(link){ 631 return jQuery.ajax({ 632 type: 'GET', 633 dataType: 'json', 634 contentType: 'application/json; charset=utf-8', 635 data: {}, 636 url: link, 637 error: function (jqXHR, textStatus, errorThrown) { 638 if(jqXHR.status == 200){ 639 val1=true; 640 console.log("worked" + val1) 641 // jQuery('a[href="' + link + '"]').css('color', 'green') 642 // jQuery('a[href="' + link + '"]').css('font-weight', 'bold') 643 } 644 else{ 645 val1=true; 646 console.log("defect" + val1) 647 // jQuery('a[href="' + link + '"]').css('color', 'red') 648 // jQuery('a[href="' + link + '"]').css('font-weight', 'bold') 649 jQuery('.defectLinks').append('<li>Intern: <a href="' + link + '">' + link + '</a></li>') 650 } 651 }, 652 success: function (data) { 653 } 654 });
655} 656 657 //Externe Links checken 658 function checkStatusExtern(link){ 659 // console.log('in') 660 // return jQuery.ajax({ 661 // type: 'GET', 662 // data: {}, 663 // dataType: 'jsonp', 664 // contentType: 'application/json; charset=utf-8', 665 // url: link, 666 // error: function (jqXHR, textStatus, errorThrown) { 667 // console.log(jqXHR.status, jqXHR) 668 // if(jqXHR.status == 200){ 669 // console.log("worked") 670 // jQuery('a[href="' + link + '"]').css('color', 'green') 671 // jQuery('a[href="' + link + '"]').css('font-weight', 'bold') 672 // } 673 // else{ 674 // console.log("defect") 675 // jQuery('a[href="' + link + '"]').css('color', 'red') 676 // jQuery('a[href="' + link + '"]').css('font-weight', 'bold') 677 // jQuery('.defectLinks').append('<li><a href="' + link + '">Extern: ' + link + '</a></li>') 678 // } 679 // }, 680 // success: function (data) { 681 // console.log(data); 682 // } 683 // }); 684 // console.log(link) 685 // link = link.replace("ü", "ue").replace("ö", "oe").replace("ä", "ae").replace("Ã", "ss") 686 // setTimeout(function() { 687 // var el = document.createElement('script'); 688 // el.classList.add('checkStatus') 689 // el.src = link; 690 // el.onerror = function (msg) { 691 // console.log(msg) 692 // // jQuery('a[href="' + link + '"]').css('color', 'red') 693 // // jQuery('a[href="' + link + '"]').css('font-weight', 'bold') 694 // jQuery('.defectLinks').append('<li>Extern: <a href="' + link + '">' + link + '</a></li>') 695 // } 696 // el.onerror = function (msg) { 697 // console.log(msg) 698 // // jQuery('a[href="' + link + '"]').css('color', 'red') 699 // // jQuery('a[href="' + link + '"]').css('font-weight', 'bold') 700 // jQuery('.defectLinks').append('<li>Extern: <a href="' + link + '">' + link + '</a></li>') 701 // } 702 // document.body.appendChild(el); 703 // val2=true 704 // }, 1000); 705 fetch(link) 706 .then(response => { 707 console.log('HTTP Status:', response.status, response.statusText); 708 709 // Check for non-successful HTTP status codes 710 if (!response.ok) { 711 throw new Error(`HTTP Error: ${response.status} ${response.statusText}`); 712 } 713 714 return response.text(); // or response.json() depending on the expected response type 715 }) 716 .then(data => { 717 // Handle successful response 718 console.log('Success:'); 719 }) 720 .catch(error => { 721 // Handle other errors, including HTTP errors 722 console.error('Fetch Error:', error.message); 723 }); 724 725 setTimeout(function() { 726 checkStatus(link) 727 }, 500); 728 } 729 730 function checkStatus(link){ 731 var performanceEntries = performance.getEntriesByType("resource"); 732 var croplink = link.replace(/(^\w+:|^)\/\//, '') 733 var currentPerformance = performanceEntries.findIndex(x => x.name.includes(croplink)) 734 var status = performanceEntries[currentPerformance].responseStatus 735 var duration = performanceEntries[currentPerformance].duration 736 var name = performanceEntries[currentPerformance].name 737 if(status == 0){ 738 console.log(duration, name) 739 if(duration < 110){ 740 jQuery('.defectLinks').append('<li>Extern: <a href="' + link + '">' + link + '</a></li>') 741 } 742 } 743 } 744
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.