Вообще, придётся. Де-факто смены страницы не происходит, потому matches и не исполняется. Так что придётся встраивать скрипт на все страницы контакта, и уже из него детектить, какая конкретно страница открыта
Ну так вам надо его переделать серьёзно очень, хочу вам сказать. Читать про AJAX, www.javascript-coder.com/html-form/form-validation.phtml (про Triggering the validations when custom submitting the form) и менять логику PHP файла чтобы он возвращал JSON например при запросе. Я бы сделал обработку кастомного GET параметр для таких вещей.
Могу посоветовать только ещё более извращенский способ. С помощью LLVM скомпилить обычную C++ программу и сконвертировать её в JS-код при помощи emScripten. Примерно как это было сделано вот здесь: github.com/katsuyan/speak.js
Судя по описанию, это скорее напоминает нечто вроде RPC. Не совсем обмен данными. Скорее разделение фронтенда (на клиент сайде) и бэкенда (на сервер сайде) можно на его основе неплохо сделать. ИМХО.