1

我正在尝试创建一个 PhoneGap 应用程序,该应用程序在一定程度上提供了一个自定义搜索引擎。我已按照 Google 的说明创建了以下 HTML 文件,当以 file:///text.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 上使用 Sencha Touch。我想我也许可以使用一些 dom 和组件访问函数来操纵提交事件。然而,谷歌的 JS 缩短后几乎是无法穿透的。即使在 deminification 之后,你也有像 aob 这样的代码。我的天啊。

所以我只是在 Sencha 应用程序中使用 iframe 将上面问题中显示的脚本下拉到设备上。来自 Conor Armstrong 的一些代码非常有助于使其在 Sencha Touch 中正常工作。

于 2011-07-15T17:57:35.560 回答