У меня есть протокол (как http) со схемой, управляемой с приложением сторонних производителей, зарегистрированным в Mac OS X. Т.е., x-someapp://someaction или что-то как этот.
Как я могу открыть этот URL с Google Chrome? По умолчанию Chrome начинает искать в механизме Google, вместо этого запускающем Приложение и передающем обработку URL ему...
Safari запускает некоторое зарегистрированное Приложение. И это - правильная вещь.
Firefox и Opera спрашивают, что сделать..., и я могу запустить Приложение также.
Но Chrome... Не спрашивает.
Я даже пытался записать некоторую страницу HTML с JavaScript внутри для отправки XHttpRequest:
function _httpExecuteCallback()
{
if (httpRequestCallbackFunction != null) {
if (httpRequest.readyState == 4) {
if (httpRequest.status == 200) {
httpRequestCallbackFunction();
httpRequestCallbackFunction = null;
}
}
}
}
function _httpGet(url, callbackFunction)
{
httpRequest = false;
httpRequestCallbackFunction = callbackFunction;
httpRequest = new XMLHttpRequest();
httpRequest.onreadystatechange = _httpExecuteCallback;
httpRequest.open('GET', url, true);
httpRequest.send(null);
}
_httpGet('x-someapp://test',function(){})
Никакие результаты также...
Я нашел решение, которое работает с Chrome. Я использую IFRAME-way.
Пример (с JQuery):
$("body").append('<span id="__protoProxy"></span>');
function queryWord(aWord)
{
var protoProxy = document.getElementById('__protoProxy');
if (protoProxy)
{
var word = aWord.replace('"','\"');
protoProxy.innerHTML = '<div style="display:none;"><iframe src="x-myproto://query?' + word + '"></iframe></div>';
}
}
queryWord('hello');
Если Chrome не распознает схему URL-адресов, по умолчанию выполняется поиск.
Вот что я вижу в Safari: альтернативный текст http://img62.imageshack.us/img62/6792/clipboard02oh.jpg
и в Firefox:
альтернативный текст http://img138.imageshack.us/img138/9986/clipboard04xk.jpg
Я считаю, что причина, по которой Chrome по умолчанию выполняет поиск, заключается в том, что существуют специальные поисковые запросы Google, в которых используется двоеточие.
Например:
Это одна из неприятностей, которые у меня есть с Firefox, мне нужно перейти к «окну поиска», а не к адресной строке, чтобы выполнить эти типы поисков. Поскольку в Chrome нет отдельного окна поиска, как в Firefox, IE и Safari, эта функция является обязательной.
Запросы Ajax не помогут вам обойти эту проблему.