Проверьте, загружен ли мой javascript на сайт
Я задавал этот вопрос раньше, но, кажется, меня неправильно поняли, поэтому я решил спросить еще раз, но на этот раз с большим количеством информации:
Для ленивого читателя моя цель здесь:
Есть ли способ проверить, включен ли javascript на внешнем сайте из PHP или через Ajax?
Подробное описание:
Итак, моя компания имеет много клиентов, когда эти клиенты регистрируются на нашем сайте, им вручаютjavascript
, Затем они могут использовать этоscript
на своем собственном сайте, чтобы получить некоторые дополнительные функции.
Теперь все веб-сайты, которые есть у клиента, хранятся в нашей системе CMS (как будто есть список всех веб-сайтов, которые у них есть, которые подписаны с нами).
Теперь мой босс дал мне следующее задание:
Нам нужна функция, чтобы пользователь мог нажать кнопку «Тест», и система проверит, находится ли javascript на своем сайте и работает ли он без ошибок (т.е. есть ли другой скрипт, блокирующий наш).
Последние пару дней я пытался найти похожие случаи наweb
и единственное, что мне предложили, это Phantomjs, однако, НЕТ примеров того, как даже приблизиться к тому, чего я хочу достичь.
Итак, мой вопрос к вам:
Можно ли проверить, есть ли у сайта определенный JavaScript.Можно ли проверить, работает ли JavaScript без ошибок (если консоль выдает ошибки или нет)Я надеюсь, что на этот раз меня не поймут :) Если у вас есть какие-либо вопросы, просто оставьте сообщение, и я отвечу как можно быстрее!
Решение PhantomJs (первоначально размещено Элиасом)
Это мой код:
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();
});
И нет вывода, он просто продолжает работать вечно, когда я запускаю его с php:
test.php
<?php echo shell_exec('phantomjs hello.js');
?>