我想构建自定义Google搜索。
我尝试了this one
我的代码
<div>
<form id="cse-search-box" action="http://google.com/cse" target='if2'>
<input type="hidden" name="cx" value="009827885688477640989:igzwimalyta" />
<input type="hidden" name="ie" value="UTF-8" />
<input type="text" name="q" size="31" />
<input type="button" name="sa" value="Search" onclick="doit()" />
</form>
</div>
<div>
<iframe name="if2" id="if2" width="100%" height="600px" marginheight="0" frameborder="0">
</iframe>
</div>
它的工作。 然后,当更多数据来自Google时,我尝试删除高度滚动条。 但它说错误就像 不安全的JavaScript尝试使用网址google.com/...从URL为192.168.9.185/KLMS/CustomGoogleSearch.aspx的框架访问框架。域,协议和端口必须匹配
有没有任何方法可以在不使用Iframe(如ajax调用)的情况下从Google获取数据 [编辑]
我试过
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="CSS/Search.css" />
<script type="text/javascript" src="JS/jquery-1.4.2.min.js"></script>
<script type="text/javascript" src="JS/CustomSearch.js"></script>
</head>
<body>
<div>
<form id="cse-search-box" action="http://google.com/cse" target='if2'>
<input type="hidden" name="cx" value="009827885688477640989:igzwimalyta" />
<input type="hidden" name="ie" value="UTF-8" />
<input type="text" name="q" size="31" />
<input type="button" name="sa" value="Search" onclick="doit()" />
</form>
</div>
<div>
<form id="frmSearch" runat="server" autocomplete="off">
<div id="mainSearchContainer">
<!-- Container to show Internal search result -->
<div class="searchResult">
<!-- Show Item search result (Currently Tip) -->
<div class="itemResult">
<fieldset>
<legend>Items</legend>
<div class="resultContainer">
</div>
</fieldset>
</div>
<!-- Show People search result (currently PointCat members) -->
<div class="peopleResult">
<fieldset>
<legend>People</legend>
<div class="resultContainer">
</div>
</fieldset>
</div>
</div>
</div>
</form>
</div>
<div>
<iframe name="if2" id="if2" width="100%" height="600px" marginheight="0" frameborder="0"></iframe>
</div>
<script type="text/javascript">
// get AJAX http request
var xmlhttp = getXMLHttpRequest();
function getXMLHttpRequest() {
var xhr;
if (window.XMLHttpRequest) {
//code for IE7+, Firefox, Chrome, Opera, Safari
xhr = new XMLHttpRequest();
}
else {
//code for IE6, IE5
xhr = ActiveXObject("Microsoft.XMLHTTP");
}
return xhr;
}
window.doit = function () {
xmlhttp.onreadystatechange = function () {
document.forms["cse-search-box"].submit();
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
//This is used when AJAX returns
//xmlhttp.responseText contains all markup sent back from google
//Determine size of iframe
$("#if2").attr('width', '100%');
$("#if2").attr('height', textHeight(xmlhttp.responseText) + "px");
//Used to set the contents of the iframe
//May have to be adapted to get the response to a specific place in the iframe tag hierarchy
$("#if2").attr('src', "data:text/html;charset=UTF-8," + escape(xmlhttp.responseText));
}
};
xmlhttp.open("POST", "http://google.com/cse", true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.send("cx=009827885688477640989:igzwimalyta&ie=UTF-8&q=31");
};
//Measures the size of the returned text
function textHeight(text) {
$("body").append('<span id="tempSpan" style="display:block;">' + text + '</span>');
var height = $("#tempSpan").height();
$("#tempSpan").remove();
return height;
};
</script>
</body>
</html>
[/编辑]
请帮忙。
提前致谢
答案 0 :(得分:1)
你可以尝试使用ajax调用,当它返回时设置iframe的大小。
// get AJAX http request
var xmlhttp = getXMLHttpRequest();
function getXMLHttpRequest() {
var xhr;
if (window.XMLHttpRequest) {
//code for IE7+, Firefox, Chrome, Opera, Safari
xhr = new XMLHttpRequest();
}
else {
//code for IE6, IE5
xhr = ActiveXObject("Microsoft.XMLHTTP");
}
return xhr;
}
发送AJAX请求并听取回复:
window.doit = function() {
xmlhttp.onreadystatechange = function () {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
//This is used when AJAX returns
//xmlhttp.responseText contains all markup sent back from google
//Determine size of iframe
$("#if2").attr('width', '100%');
$("#if2").attr('height', textHeight(xmlhttp.responseText) + "px");
//Used to set the contents of the iframe
//May have to be adapted to get the response to a specific place in the iframe tag hierarchy
$("#if2").attr('src', "data:text/html;charset=UTF-8," + escape(xmlhttp.responseText));
}
};
xmlhttp.open("POST", "http://google.com/cse", true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.send("cx=009827885688477640989:igzwimalyta&ie=UTF-8&q=31");
};
测量响应的高度(改编自Calculating text width):
//Measures the size of the returned text
function textHeight(text){
$("body").append('<span id="tempSpan" style="display:block;">' + text + '</span>');
var height = $("#tempSpan").height();
$("#tempSpan").remove();
return height;
};