Нажми и позвони на BlackBerry - PullRequest
2 голосов
/ 21 июля 2011

У меня есть сайт, который отображает номера телефонов и адреса электронной почты.Цель состоит в том, чтобы дать пользователю возможность просто нажать на телефон или электронную почту, чтобы завершить действие.

В настоящее время у меня есть файл .php, который создает URI для сообщения или электронной почты и отслеживает действия.Таким образом, у меня есть следующее в моем html для ссылки, которую увидит пользователь:

<a href="track.php?" target="_self">Contact</a>

track.php затем определяет, является ли он call / email / website и устанавливает переменную $ location (либо тел:1231231234 / web: www.test.com / mailto: address@test.com).Если попытаться вернуть его / выполнить перенаправление следующими способами:

1.

echo '<script type="text/javascript">
        window.location="'.$location.'";
      </script>';

2.

header('Location: ' . $location);

3.

echo '<script type="text/javascript">
        header.location="'.$location.'";
      </script>';

Все эти методы работают на устройствах iPhone / Android / Symbian, но не на Blackberry (я тестировал с BB Curve 8520).

Если я жестко закодирую ссылки (см. Код ниже) и нажимаю наон напрямую работает на 100%, но как только я делаю перенаправление, он выдает ошибку «Protocall не поддерживается ...».

    <a href="tel:xxxxxxxxx">Phone xxxxxxxxxx</a>
    <a href="mailto:xxx@xxx">Mail xxxxxx@xxxxxxx.co.za</a>
    <a href="web:xxxx">Open link www.xxxxxxx.co.za</a>
    <a href="sms:xxxxx">Send SMS to xxxxxxx</a>

Любые предложения / решения / обходной путь?

PS.Я попробовал это сделать с метатегом <meta http-equiv="x-rim-auto-match" content="none" /> и без него.По-прежнему выдает ту же ошибку.

Ответы [ 2 ]

1 голос
/ 31 июля 2011

К сожалению, у меня нет BlackBerry для тестирования, но вот что вы можете попробовать:

Используйте синхронный вызов XMLHttpRequest (то есть AJAX, но без "асинхронной" части) для вызова вашего трекера. В этом случае ваш track.php вообще не нуждается в перенаправлении, потому что он вызывается в фоновом режиме.

<script type="text/javascript">
function callURL(url) {
// I'll assume you don't have IE on your BlackBerry, and that you can just use the native XMLHttpRequest object
var xhr = new XMLHttpRequest();
xhr.open('GET', url, false);
xhr.send();
</script>
<a href="tel:xxxxxxxxx" onclick="callURL('track.php');">Phone xxxxxxxxxx
</a>
0 голосов
/ 03 августа 2011

В браузере Blackberry (OS 4 и 5) очень нестабильная поддержка XMLHttpRequest. Стоит попробовать. Мы работали над этим много лет назад.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...