我正在尝试从 this page 复制 Google 图片搜索。这是我的代码:
<script type="text/javascript">
<% if @note.text == "" %>
google.load("search", "1",{"callback":searchCallback()});
<% else %>
google.load("visualization", "1",{"callback":dummyFunction});
<% end %>
function se() {
var sFormDiv = document.getElementById("searchForm");
var leftScDiv = document.getElementById("leftSearchControl");
this.leftControl = new google.search.SearchControl();
this.searchForm = new google.search.SearchForm(true, sFormDiv);
this.searchForm.setOnSubmitCallback(this, se.prototype.onSubmit);
this.searchForm.setOnClearCallback(this, se.prototype.onClear);
this.leftControl.setResultSetSize(GSearch.LARGE_RESULTSET);
var searcher;
var options;
this.leftControl.addSearcher(new google.search.ImageSearch());
var drawOptions = new google.search.DrawOptions();
drawOptions.setDrawMode(GSearchControl.DRAW_MODE_TABBED);
this.leftControl.setNoResultsString(GSearchControl.NO_RESULTS_DEFAULT_STRING);
this.leftControl.draw(leftScDiv);
this.searchForm.execute("Ferrari");
}
// when the form fires a submit, grab its
// value and call the left and right control
se.prototype.onSubmit = function(form) {
var q = form.input.value;
if (q && q!= "") {
this.leftControl.execute(q);
}
return false;
}
// when the form fires a clear, call the left and right control
se.prototype.onClear = function(form) {
this.leftControl.clearAllResults();
form.input.value = "";
return false;
}
function searchCallback(){
new se();
}
function dummyFunction() {
}
</script>
当我运行它时,我收到此错误:
google.search is undefined
this.leftControl = new google.search.SearchControl();
如果我通过加载搜索 API 时运行的回调到达该行,这怎么可能?感谢您的阅读。
最佳答案
How can this be, if I'm getting to that line by way of the callback that is run when the search API is loaded? Thanks for reading.
您不是传递回调,而是通过在函数后面放置 ()
来立即调用该函数。 searchCallback()
依次调用 se()
,后者尝试调用 google.search.SearchControl
,但 google.search
> 此时未定义,在 undefined
上调用任何属性或函数都会抛出 TypeError
。
替换
google.load("search", "1",{"callback":searchCallback()});
与
google.load("search", "1",{"callback":searchCallback});
关于javascript - 使用 Google 图片搜索 API 时出现奇怪的 javascript 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3328480/