Задать вопрос

Как правильно вызвать JavaScript функцию вида $.function(); из PHP?

Имеется следующий JS Скрипт:
(function($) {

$.platform = {
    iPhone: navigator.userAgent.match(/iPhone/i),
    iPod: navigator.userAgent.match(/iPod/i),
    iPad: navigator.userAgent.match(/iPad/i),
    Android: navigator.userAgent.match(/Android/i)
}

$.platform.iOS = $.platform.iPhone || $.platform.iPod || $.platform.iPad;
$.platform.Mobile = $.platform.iOS || $.platform.Android;

$.extend({

    fixLinks: function(persist) {
        if ($.platform.iOS) {
            if (persist == null) persist = true;
            persist = persist && localStorage;
            if (persist) {
                var CurrentLocation = window.location.pathname+window.location.search,
                    StoredLocation = localStorage.getItem("location");
                if (StoredLocation && StoredLocation!=CurrentLocation) window.location = StoredLocation;
            }
            $('a').live('click',function(e) {
                e.preventDefault();
                if (persist && this.host==window.location.host)
                localStorage.setItem("location",this.pathname+this.search);
                window.location = this.href;
            });
        }
    },

    fixCookie: function (SessionCookieName) {
        if (localStorage && $.platform.iOS) {
            var CookieSession = document.cookie.match(new RegExp(SessionCookieName+"=[^;]+")),
                LocalSession = localStorage.getItem(SessionCookieName);
            if (CookieSession) {
                CookieSession = CookieSession[0].replace(SessionCookieName+"=","");
                if (LocalSession!=CookieSession) localStorage.setItem(SessionCookieName,CookieSession);
            } else if (LocalSession && LocalSession!=CookieSession) {
                document.cookie = SessionCookieName+"="+LocalSession+"; path=/";
                window.location.reload(true);
            }
        }
    }

});

})( jQuery );


Подскажите пожалуйста, как можно вызвать из PHP функции из этого скрипта, которые имеют вид: $.fixLinks(); Скрипт подключен вместе с библиотекой к PHP.
  • Вопрос задан
  • 4477 просмотров
Подписаться 2 Оценить 1 комментарий
Решения вопроса 2
Petroveg
@Petroveg
Миром правят маленькие с#@&ки
Что-то вы у себя в голове сложили, но не разобрали. Ничего, это мы сейчас поправим:)
PHP скрипты исполняются на сервере. Javascript скрипты исполняются на клиенте (например, в браузере). Они не работают вместе.

Код, что вы считаете кодом страницы, отдаётся сервером как text/html, и ровно так же разбирается браузером. Пока не начал работать HTML-парсер, никакие скрипты не JS-выполняются и не могут выполняться. А ваши PHP-скрипты давно закончили работу и к браузеру не имеют вообще никакого отношения.

Безусловно, есть вариант выполнения JS-скриптов на сервере (тот же Node.js), но код, что вы привели, предназначен для работы на клиенте.

В общем, $.fixLinks() можно вызвать только в браузере, но PHP к этому имеет отношение, как человек, бросивший письмо в почтовый ящик, к работе этой самой почты.
Ответ написан
mrsombre
@mrsombre
Веб-программист
Из php нельзя вызвать функции JS, тк когда php завершает работу на выходе мы имеем html. Но можно вставить кусок js кода, который выполнится при загрузке страницы, например

echo <<<EOL
$(function(){
  $.fixLinks();
});
EOL;
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы