Sprawdź, czy mój javascript jest załadowany na stronie
Zadałem to pytanie wcześniej, ale wydaje się, że źle zrozumiałem, dlatego postanowiłem zapytać jeszcze raz, ale tym razem z wieloma informacjami:
Dla leniwego czytelnika moim celem jest:
Czy istnieje sposób na sprawdzenie, czy javascript jest włączony na zewnętrznej stronie z PHP lub Ajax
Szczegółowy opis:
W porządku, więc moja firma ma wielu klientów, kiedy ci klienci zapisują się na naszej stronie, są wręczanijavascript
. Mogą to wykorzystaćscript
na własnej stronie internetowej, aby uzyskać dodatkowe funkcje.
Teraz wszystkie strony internetowe, które posiada klient, są przechowywane w naszym systemie CMS (podobnie jak lista wszystkich stron, które mają podpisane z nami).
Teraz mój szef dał mi następujące zadanie:
Potrzebujemy funkcji, aby użytkownik mógł nacisnąć przycisk „Test”, a system przetestuje, czy javascript jest na ich stronie i działa bezbłędnie (tj. Czy jest inny skrypt blokujący nasz).
W ciągu ostatnich kilku dni próbowałem znaleźć podobne przypadki na stronieweb
i jedyną rzeczą, jaką zasugerowałem, był Phantomjs, jednak nie ma przykładów, jak nawet zbliżyć się do tego, co chcę osiągnąć.
Więc moje pytanie do ciebie:
czy można sprawdzić, czy witryna ma określony javascript.czy można sprawdzić, czy javascript działa bez błędów (jeśli konsola zgłasza błędy lub nie)Mam nadzieję, że tym razem nie będę źle zrozumiany :) jeśli masz jakieś pytania, po prostu zostaw wiadomość, a ja odpowiem tak szybko, jak to możliwe!
Rozwiązanie phantomJs (oryginalnie opublikowane przez Eliasa)
To jest mój kod:
var page = require('webpage').create();
page.onConsoleMessage = function( message, line, srcId)
{//show console errors for page
console.log('Page has errors showing in console: ' + msg
+ ' (line: ' + (line || '?') + ', id: ' + srcId + ')');
};
page.open('http://www.marcrasmussen.com',function(status)
{
if (status != 'success')
{//can't load page
console.log('Failed to open page: ' + status);
phantom.exit();
return;
}
var reslt = page.evaluate(function()
{
var usesOurScript = false,
scripts = document.querySelectorAll('script');//get all script tags
Array.forEach.apply(scripts, [function(elem)
{//check all loaded scripts
if (/jquery\.js/.js.js.test(elem.getAttribute('src')))
{//this src attribute refers your script
usesOurScript = true;//set to true
}
}]);
return {page: location.href, found: usesOurScript};//return its href and the use-status
});
//script was found? adjust message
reslt.found = (reslt.found ? ' uses ' : ' does not use ') + 'our script!';
console.log(reslt.page + reslt.found);//logs url does not use || uses our script
phantom.exit();
});
I nie ma wyjścia, które po prostu działa wiecznie, gdy uruchomię go z php:
Test.php
<?php echo shell_exec('phantomjs hello.js');
?>