Проблема пользовательского поиска Google из телефонной щели - PullRequest
1 голос
/ 14 июля 2011

Я пытаюсь создать приложение PhoneGap, которое частично делает доступной систему пользовательского поиска. Я следовал инструкциям в Google и создал следующий HTML-файл, который отлично работает в настольном браузере при доступе в виде файла: ///text.html. Когда я использую его в качестве стартовой страницы с пропуском в телефоне, он отображается нормально. Там есть текстовое поле и кнопка «поиск». Однако, когда я нажимаю «Поиск», на устройстве Android появляется «Ошибка приложения», говоря: «file: ///google.com/cse? Q = .... не найден».

CustomSearchControl вводит некоторый код на страницу - в основном, форму. Хотя я мог бы манипулировать DOM в элементе 'cse', чтобы исправить схему URL, но я не вижу URL google.com с Firebug.

Ищите способ устранить проблему или обойти ее. Вот HTML-код:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
    <title>Google AJAX Search API Sample</title>
    <script src="https://www.google.com/jsapi?INSERT-YOUR-KEY"></script>
    <script type="text/javascript">
        google.load('search', '1');
        google.setOnLoadCallback(function(){
          var search = new google.search.CustomSearchControl('007447616601297022092:7nhsxzpy6ao').draw('cse');
        }, true);
    </script>
  </head>
  <body style="font-family: Arial;border: 0 none;">
    <div id="cse" style="width:100%;">Loading...</div>
  </body>
</html>

1 Ответ

0 голосов
/ 15 июля 2011

Я смог найти обходной путь для этого после долгих попыток вещей ...

Хотя я не уверен, но я считаю, что корень проблемы в том, что скрипт Google видит, что он запускается из локальной файловой системы устройства, и он по ошибке пытается отправить форму в файл: // /.

Я использую Sencha Touch поверх PhoneGap. Я думал, что смогу использовать некоторые функции доступа к dom и компонентам для манипулирования событием submit. Однако Google JS почти непроницаем после сокращения. Даже после деминификации у вас есть код, похожий на aob. OMG.

Так что я просто набросился и использовал iframe в приложении Sencha, чтобы перенести скрипт, показанный в вопросе выше, на устройство. Некоторый код от Конора Армстронга был очень полезен для того, чтобы заставить все это прекрасно работать в Sencha Touch.

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