1

カスタム検索エンジンを部分的に利用できるようにするPhoneGapアプリケーションを作成しようとしています。Googleの指示に従い、file:///text.htmlとしてアクセスしたときにデスクトップブラウザで正常に機能する次のHTMLファイルを作成しました。電話ギャップのスタートページとして使用すると、正常にレンダリングされます。テキストボックスと「検索」ボタンがあります。ただし、[検索]を押すと、Androidデバイスで「file:///google.com/cse?q=....が見つかりません」という「アプリケーションエラー」が表示されます。

CustomSearchControlは、ページにいくつかのコード(基本的にはフォーム)を挿入します。'cse'要素でDOMを操作してURLスキームを修正できるかもしれませんが、Firebugでgoogle.comのURLが表示されません。

問題を解決するか、回避する方法を探しています。これが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>
4

1 に答える 1

0

いろいろ試してみた結果、この回避策を見つけることができました...

よくわかりませんが、問題の根本は、Googleスクリプトがデバイスのローカルファイルシステムから実行されていることを認識しており、誤ってフォームをfile:///に送信しようとしていることだと思います。

PhoneGapの上でSenchaTouchを使用しています。いくつかのDOMおよびコンポーネントアクセス関数を使用して、送信イベントを操作できる可能性があると思いました。ただし、GoogleのJSは、短縮された後はほとんど侵入で​​きません。間引きした後でも、aobのようなコードがあります。ああ、神様。

そこで、Senchaアプリ内でiframeをパントして使用し、上記の質問に示されているスクリプトをデバイスにプルダウンしました。Conor Armstrongの一部のコードは、SenchaTouchですべてがうまく機能するようにするのに非常に役立ちました。

于 2011-07-15T17:57:35.560 に答える