我在浏览器中运行谷歌自定义搜索它工作正常。即使在Phonegap的模拟器中也可以正常运行,但会出现网络错误或在Android手机上运行时显示空白屏幕。或给出此错误“file:///google.com/cse?q=.... 找不到。”
我正在使用谷歌自定义搜索 v2 代码。
我在浏览器中运行谷歌自定义搜索它工作正常。即使在Phonegap的模拟器中也可以正常运行,但会出现网络错误或在Android手机上运行时显示空白屏幕。或给出此错误“file:///google.com/cse?q=.... 找不到。”
我正在使用谷歌自定义搜索 v2 代码。
您获得的自定义搜索 v2 的代码如下所示:
<script>
(function() {
var cx = 'ENGINE_ID';
var gcse = document.createElement('script');
gcse.type = 'text/javascript';
gcse.async = true;
gcse.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') +
'//www.google.com/cse/cse.js?cx=' + cx;
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(gcse, s);
})();
</script>
<gcse:search></gcse:search>
它大致做的是创建一个这样的标签:
<script type="text/javascript" src="http://www.google.com/cse/cse.js?cx=ENGINE_ID">
并将其插入页面上的其他脚本之前。因此,您可以完全跳过此代码并手动将上述标记(使用您的引擎 ID)插入<gcse:search></gcse:search>
到您的 HTML 中。如果仍然无法从 file:// 连接到 http://,请下载此脚本 ( http://www.google.com/cse/cse.js?cx=ENGINE_ID ) 并将其作为本地 javascript 文件提供。
我遇到了同样的问题。JavaScript 中的一行更改使 file:// 错误消失:
// This line must take place before initializing GCSE
window.IS_GOOGLE_AFS_IFRAME_ = true;
在 iOS 和 Android Cordova 环境中均经过验证。