C# 在ASP.NET中使用Google自定义搜索和;未捕获类型错误:无法读取属性';设置';“未定义”的定义;
我发现了半相似的问题,但没有一个能说明我的情况,所以我希望这能帮助我和其他遇到同样问题的人。长话短说,我正在尝试使用以下引导解决方案在ASP.NET(Web表单)CMS中实现(整版)Google自定义搜索框: 我创建了Bootstrap弹出框,其中嵌入了我的Google自定义搜索作为.ascx控件,它工作正常,但当我单击搜索图标时,控制台中出现JS错误,我认为问题是因为我的ASP.NET CMS已经有回发表单,这使集成变得复杂,因为在我的ASP.NETC# 在ASP.NET中使用Google自定义搜索和;未捕获类型错误:无法读取属性';设置';“未定义”的定义;,c#,jquery,twitter-bootstrap,google-custom-search,C#,Jquery,Twitter Bootstrap,Google Custom Search,我发现了半相似的问题,但没有一个能说明我的情况,所以我希望这能帮助我和其他遇到同样问题的人。长话短说,我正在尝试使用以下引导解决方案在ASP.NET(Web表单)CMS中实现(整版)Google自定义搜索框: 我创建了Bootstrap弹出框,其中嵌入了我的Google自定义搜索作为.ascx控件,它工作正常,但当我单击搜索图标时,控制台中出现JS错误,我认为问题是因为我的ASP.NET CMS已经有回发表单,这使集成变得复杂,因为在我的ASP.NET中会有一个嵌套的,它不是有效的HTML,这就
中会有一个嵌套的
,它不是有效的HTML,这就是为什么我在控制台中收到一个JS错误,说:Uncaught TypeError:无法读取未定义的属性“settings”
这是Google希望我粘贴到自定义控件中的
中的代码:
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="GoogleCustomSearch.ascx.cs" Inherits="GoogleCustomSearch" %>
<!-- Google custom search in a pop-up -->
<ul class='nav navbar-nav navbar-right google-custom-search-box'>
<li>
<a href="#search">
<span id="searchGlyph" class="glyphicon glyphicon-search"></span>
</a>
</li>
</ul>
<div id="search">
<button type="button" class="close">×</button>
<script>
(function() {
var cx = 'my-cx-number-123456';
var gcse = document.createElement('script');
gcse.type = 'text/javascript';
gcse.async = true;
gcse.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') +
'//cse.google.com/cse.js?cx=' + cx;
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(gcse, s);
})();
</script>
<gcse:search></gcse:search>
</div>
上面的代码创建了嵌套的
标记,我正试图避免它。那么,避免这个问题的最佳替代方案/代码是什么
顺便说一下,我想在同一个弹出窗口中显示搜索结果,并在GCS仪表板中选择“全宽”外观。您能将页面(视图源)的实际HTML输出复制到JSFIDLE或其他文件中吗。我对这里发生的事情有点困惑。我发现这篇文章解释了同样的问题,但这篇文章建议使用搜索结果页面,而不是在同一页面上显示搜索结果,这就是我对如何继续感到困惑的地方:你最好使用iframe然后在其中加载搜索结果(类似于导航到另一个链接,但仅使用页面的一部分)嗯……这不是一个完美的解决方案,但也不是一个坏主意。我会试一试。@MattiPrice谢谢你的建议。iframe解决方案可以工作,但我很难用jQuery使嵌入的表单输入字段聚焦。在嵌入iframe之前,我可以用
$(“#gsc-I-id1”).focus()控制字段;
但现在不是了。
// Google search pop-up
$(function () {
$('a[href="#search"]').on('click', function(event) {
event.preventDefault();
$('#search').addClass('open');
$('body').addClass('gsc-overflow-hidden');
$('#gsc-i-id1').focus();
$('#gsc-i-id1').attr('placeholder', 'Search...');
});
$('#search, #search button.close').on('click keyup', function(event) {
if (event.target == this || event.target.className == 'close' || event.keyCode == 27) {
$(this).removeClass('open');
$('body').removeClass('gsc-overflow-hidden');
}
});
});