11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

Je dois intégrer un moteur de recherche interne sur un site.
Je viens de trouver le script Xsearch mais le soucis c'est qu'il m'affiche les résultats sur la même page et je voudrais avoir les résultats sur une nouvelle page.
Ce champ de recherche est intégré sur une page d'accueil dans le bandeau et lorsque j'effectue ma recherche je voudrais que cela affiche donc les résultats sur une nouvelle page.

Voici le code du script :

/* XSearch version5.0  http://www.twicefun.com/just4fun  */
// Le nom du fichier
var searchname = 'xsearch.htm';
// Le nom et l'adresse du boutonvar usebannercode = true;
var ButtonCode = "<img src='searchbutton.gif' border=0>";
var usebannercode = true;
function templateBody(){
////// modifications possibles ///////
document.write('<html><head><title>Moteur de recherche interne</title></head><body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#996699" alink="#996699"><p><br></p><table width=760><tr><td width=730><center><font color="#000080"><font face="Arial" size="3"><font face=Arial, Verdana size=6><b>Moteur de recherche interne</font></font></center></td><td width=30><div align=right><a href="../new/moteur.html"><img src="BACK.gif" border=0 height=11 width=23></a></div></td></tr></table><center><table border=0 width=680><tr><td>');
}

function templateEnd(){
document.write('</td></tr></table></font></center></body></html>');
}
////// fin de  modifications ///////
function bannerCode(){
}
//-----------------------------------------------------------------------------------------------
var finds =0;
var sites =0;
var version = "v5.0"
var andresult = false;
var SortResults = true;
var display_start = 1;	
var displast = 10;

function searchAll(keyword){
	var timeA=new Date();
	var nw=1;
	finds=0;
	sites=0;

	var x = parseIt(keyword);
	if(x == -1)	return;
	total_keywords=x;

	document.open();
	document.clear();
	document.write('<link rel="stylesheet" href="xsearch.css">');
	AddBody();

	if (keyword.length>50) keyword=keyword.substring(0,60)+"...";

	results=new makeArray(records_count,1);
	order=new makeArray(records_count,1);
	for (q=1; q<=results.length; q++){
	results[q]=0;
	order[q]=q;
	}
	data=new makeRecordLinks(records_count);
	while(keywords[nw].length > 1)
	{
	search(data,keywords[nw]);
	nw++;
	} 

	if (andresult)
	{
	for (a=1; a<=results.length; a+=1)
	{
	if (results[a]>0)
	{
	if (results[a]<=(total_keywords-1)*2)
	{
	results[a]=0;
	sites-=1;
	}
	}
	}
	}

	var temp =0;

	if ((SortResults==true)&&(keywords!='[all]'))
	{
	 for (a=results.length; a>=2; a-=1)
	{
	for (b=1; b<a; b+=1)
	{
	if (results[order[a]]>results[order[b]])
	{
	temp=order[b];
	order[b]=order[a];
	order[a]=temp;
	}
	}
	}
	} else {
	b=0;
	for (a=results.length; a>=2; a-=1)
	{
	if (results[a]>0)
	{
	order[b]=a;
	b++
	}
	}
	}

	// Now we build the output page
	displast=display_start+10;
	if (displast>sites) displast=sites+1;
	var timeB=new Date();
////// modifications possibles ///////
	document.write("<center><h3>R&eacute;sultats : <b>"+display_start+"-"+(displast-1)+"</b> de <b>"+sites+"</b> pour 		<b>"+keyword+"</b>. Dur&eacute;e de la recherche : <b>"+((timeB-timeA)/1000)+"</b> secondes.</h3></center>");
	if (finds==0)
	{
	document.write("<h3><font color=green>Pas de r&eacute;sultats pour  <b>''"+keyword+"''</b>.</font></h3>"+
	"<p>Votre recherche sur - <b>"+keyword+"</b> - n'a trouv&eacute; aucun document correspondant dans la base de 		donn&eacute;es.</p>"+
	"<ul><LI>Assurez-vous que les mots sont bien orthographi&eacute;s.</li>"+
	"<LI>Essayez avec moins de mots.</li>"+
	"<LI>Essayez d\'autres mots-clés.</li></ul></span>"+
	"</p>");
////// fin de  modifications ///////			
	DisplayXSearch();
	document.close();
	return
	}

	q2=display_start;
	q3=displast;
	for (q=display_start; q<q3;)
	{
	if (results[order[q]]>0)
	{
	document.write("<span class='xtitle'>"+data[order[q]].v1+"</span><br>");
	x1=v1[order[q]].indexOf('http://')+7;
	if (x1==6) x1=v1[order[q]].indexOf('href=')+5;
	x2=v1[order[q]].indexOf('>');
	if (x1>0 && x2>0)
	{
	tmp=v1[order[q]].substring(x1,x2);
	x2=tmp.indexOf(' ');
	if (x2>0) tmp=tmp.substring(0,x2);
	if (tmp.substring(0,1)=="'") tmp=tmp.substring(1,tmp.length-1);
	if (tmp.substring(0,1)=='"') tmp=tmp.substring(1,tmp.length-1);
	document.write("<table border=0 width=500><tr><td><span class='xresult'>"+v3[order[q]]+"</span></td></tr></table><span class='xlocation'>"+tmp+"</span><br><br>");
	}
	q2++;
   	}
	q+=1;
	}

	if (finds>10)
	{
	document.write("<BR>");
	pages=Math.round(finds/10);
	if (finds%10<6)	pages++;

	// Create the parameter string
	paramstring=searchname+"?keywords="+keyword+"&and="+andresult+"&sort="+SortResults;
	document.write("<center><span class='xsmall'>");
////// modifications possibles ///////
	if (display_start>1) document.write("<a href='"+paramstring+"&disp="+(display_start-10)+"'>page pr&eacute;c&eacute;dente</a>");
	document.write("&nbsp;&nbsp;&nbsp;");
	for (i=1; i<=pages;){
	if ((((i-1)*10)+1)<=sites) {
	document.write("<a href='"+paramstring+"&disp="+(((i-1)*10)+1)+"'>"+i+"</a>&nbsp&nbsp ");
	}
	i++;
	}
	document.write("&nbsp;&nbsp;&nbsp;");
	if (displast<=sites) document.write("<a href='"+paramstring+"&disp="+(displast)+"'>page suivante</a>");
	document.write("</span></center>");
	}
////// fin de  modifications ///////			
	DisplayXSearch();
	document.close();
}

function Cat(){
	document.open();
	document.clear();
	AddBody();
	DisplayXSearch();
	document.close();
}


function makeArray(n,vartype) {
	this.length = n;
	for (var k = 1; k <= n; k++) {
	if (vartype==0){
	this[k] = "";
	} else {
	this[k] = 0;
	}
	}
	return this;
}               

function stripInput(key){
	while(key.substring(0,1) == ","  || key.substring(0,1) == " " ) key = key.substring(1,key.length);
	while(key.substring(key.length-1,key.length) == "," || key.substring(key.length-1,key.length) == " ") key = 			key.substring(0,key.length-1);
	return key;
}

function parseIt(key) {
	key = stripInput(key)+" ";
	var y = 1;
	while(key.indexOf(" ") > 0)
	{
	if (key.substring(0,1)=='"')
	{
	var pos=key.indexOf('"',2);
	keywords[y]=key.substring(1,pos);
	keywords[y]=stripInput(keywords[y]);
	y++;
	key=key.substring(pos+1,key.length);
	} else {
	var pos=key.indexOf(' AND ');
	if ((pos>0) && (key.indexOf(' ')>=pos))
	{
	pos=key.indexOf(' ',pos+5);
	keywords[y]=key.substring(0,pos);
	keywords[y]=stripInput(keywords[y]);
	y++;
	key=key.substring(pos+1,key.length);
	if (key.substring(0,4)=='AND ')
	{
	pos=keywords[y-1].indexOf(' ')+5;
	key=keywords[y-1].substring(pos,keywords[y-1].length)+' '+key;
	}
	} else {
	var pos=key.indexOf(' OR ');
	if ((pos>0) && (key.indexOf(' ')>=pos))
	{
	pos=key.indexOf(' ');
	keywords[y]=key.substring(0,pos);
	keywords[y]=stripInput(keywords[y]);
	if (keywords[y]!=keywords[y-1])	y++;
	key=key.substring(pos+1,key.length);
	pos=key.indexOf('OR ');
	key=key.substring(pos+3,key.length);
	pos=key.indexOf(' ');
	keywords[y]=key.substring(0,pos);
	keywords[y]=stripInput(keywords[y]);
	y++;
	key=key.substring(pos+1,key.length);
	if (key.substring(0,3)=='OR ') key=keywords[y-1]+' '+key;
	} else {
	var pos = key.indexOf(" ");
	keywords[y]=key.substring(0,pos);
	keywords[y] = stripInput(keywords[y]); 
	y++;
	if(y > 50) return -1
	key=key.substring(pos+1,key.length);
	}
	}
	}
	}
	return y-1;
}

var keywords = new makeArray(50,0);
var results;
var foundword;
var data;
var order;
var total_keywords;

function dataEntry (){
	this.v1="";
	this.v2="";
	return this;
}

function makeRecordLinks(size){
	this.length = size;
	for (var r=1; r<= size; r++) 
	{
          	 this[r] = new dataEntry();
	this[r].v1 = v1[r];
	 this[r].v2 = v2[r]; 
	}
	return this;
}

function AddBody(){
	var keytext='"'+searchname+'?keywords="+';
	var andtext='"&and="+';
	document.write('<script>function doSearch(){'+
	'searchwords=document.searchform.searchwords.value; '+
	'while (searchwords.indexOf(" ")>-1){ pos=searchwords.indexOf(" ");'+
	'searchwords=searchwords.substring(0,pos)+"+"+searchwords.substring(pos+1); }'+
	'document.location='+keytext+' searchwords+'+andtext+'"0"}'+
	'<'+'/'+'script>'
	);

	templateBody();
////// modifications possibles ///////
	document.write("<br><form name='searchform' method='post' action='javascript:doSearch()'><table border='0' width='100%'><tr><td 	align='center'><font face='Arial, Helvetica, sans-serif' size='3'><input name='searchwords' type='text' size='30'>&nbsp;&nbsp;<a 	href='javascript:doSearch()'>"+ButtonCode+"</a></font></td></tr></table></form>");
////// fin de  modifications ///////			
	if (usebannercode) bannerCode();
}

function DisplayXSearch(){
////// modifications possibles ///////
document.write("<center><hr size=1></center>")
	document.write("<Font size=-1><center>R&eacute;alis&eacute; avec <a href=http://www.twicefun.com/just4fun>XSearch 	"+version+"</a>  - Free Javascript SearchEngine</center></font>");
////// fin de  modifications ///////		
	templateEnd();
}

function search(records, keyword){
	var hit=0;
	var addcomplete=0;
	
	for (q=1; q<=records.length; q++) {
	addcomplete=0;
	search_parm=records[q].v2.toLowerCase()+" "+v3[q].toLowerCase();
	
	if (keyword.indexOf(' AND ')>0)
	{
	firstword=keyword.substring(0,keyword.indexOf(' '));
	lastword=keyword.substring(keyword.indexOf(' AND ')+5,keyword.length);
	if ((search_parm.indexOf(" "+firstword+" ") != -1) && (search_parm.indexOf(" "+lastword+" ")!= -1 ))
	{
	hit++;
	finds++;
	if(hit < 2)
	{ 
	if (results[q]==0) sites++;
	results[q] +=2;
	} 
	}
	} else {
	keyword=keyword.toLowerCase();
	if ((search_parm.indexOf(" "+keyword+" ") != -1) ||(keyword=="[all]"))
	{
	hit++;
	finds++;
	if(hit<2)
	{ 
	if (results[q]==0) sites++;
	results[q]+=2;
	} 
	} else {
	// check for a half hit (ie. search:share find:SHAREware)
	if (search_parm.indexOf(keyword) != -1)
	{
	hit++;
	finds++;
	if(hit < 2)
	{
	if (results[q]==0) sites++;
	results[q]+=1;
	x=search_parm.indexOf(keyword)+keyword.length;
	pos=search_parm.substring(1,x-keyword.length);
	while (pos.indexOf(" ")!=-1)
	{
	y=pos.indexOf(" ");
	pos=pos.substring(y+1,pos.length);
	}
	if (pos.length<=2) addcomplete++;

	pos=search_parm.substring(x,search_parm.length);
	fullresult=search_parm.substring(x,x+pos.indexOf(" "));
					
	if (fullresult.length<=2) addcomplete++;
	if (addcomplete>1) results[q]+=1;
	}
	}
	}
	}
	hit=0;
	} 
}                                       

var searchwords = '';
var newload = true;

function countParams(text){
	pos=-1;
	tmp = "";
	if (text=='') return 0;
	text=text+'&';
	i=0;
	while (text.length>0)
	{
	pos=text.indexOf('&',0);
	tmp=text.substring(pos+1);
	text=tmp;
	i++;
	}
	return i;
}	

function getCommand(text,val){
	pos=-2;
	tmp = "";
	text=text+'&';
	for (i=0; i<=val;)
	{
	pos2=pos+2;
	pos=text.indexOf('&',pos2);
	tmp=text.substring(pos,pos2-1);
	i++;
	}
	text=tmp;
	pos=text.indexOf('=',0);
	if (pos!=-1) tmp=text.substring(pos,0);
	tmp=tmp.toLowerCase();
	return tmp;
}

function getValues(text,val){
	pos=-2;
	tmp = "";
	text=text+'&';
	for (i=0; i<=val;)
	{
	pos2=pos+2;
	pos=text.indexOf('&',pos2);
	tmp=text.substring(pos,pos2-1);
	i++;
	}
	text=tmp;
	pos2=text.indexOf('=',0)+1;
	if (pos2!=-1)
	{
	tmp=text.substring(pos2);
	} else { 
	tmp='' 
	}
	
	pos=-2;
	text=tmp;	
	if (text.indexOf('%20')>0)
	{
	pos=text.indexOf('%20',0);
	tmp=text.substring(0,pos2-4)+' '+text.substring(pos2-1,text.length);
	text=tmp;
	}
	return tmp;
}		

function initXsearch(){
	if (searchwords!='')
	{
	searchAll(searchwords);
	} else {
	if (newload) Cat();
	}
}

function doParamStuff(findw){
	Myparams=countParams(findw);
	if (Myparams>0)
	{
	for (cnt=0; cnt<Myparams;)
	{
	tempw=getCommand(findw,cnt);
	tempv=getValues(findw,cnt);
	if (tempw=='keywords')
	{
	searchwords=getValues(findw,cnt);
	origsearchwords=searchwords;
	while (searchwords.indexOf('+')>-1)
	{
	pos=searchwords.indexOf('+');
	searchwords=searchwords.substring(0,pos)+' '+searchwords.substring(pos+1);
	}
	}
	if (tempw=='sort')
	{
	if ((tempv=='0')||(tempv=='false'))
	{
	SortResults=false;
	} else {
	SortResults=true;
	}
	}
				
	if (tempw=='and')
	{
	if ((tempv=='1')||(tempv=='true'))
	{
	andresult=true;
	} else {
	andresult=false;
	}
	}
	if (tempw=='disp') display_start=parseInt(tempv);
	cnt +=1;
	}
	}
}

findw=document.location.search;
findw="&"+findw.substring(1,findw.length);

while (findw.indexOf('%20')>0){
	pos2=findw.indexOf('%20',0);
	tmp=findw.substring(0,pos2)+' '+findw.substring(pos2+3,findw.length);
	findw=tmp;
}
doParamStuff(findw);


Sinon, voici un lien sur lequel on trouve ce script :
http://www.presencenet.net/modules.php?name=Les_JavaScripts&file=script-infos&id=167

J'espère que vous pourrez m'aider ou sinon peut-être avez-vous un autre script.

Merci bien

Vinix
[/b][/b][/b][/b]
Hello,

Tu sembles avoir pris un script tout fait, mais qui ne fait pas exactement ce que tu veux. Or, le script que tu postes est très volumineux, je doute que quiconque ait l'envie et la patience de le lire pour te dire quoi changer. A moins que quelqu'un ne le connaisse déjà, mais dans ce cas peut-être aurait-tu plus de chance en t'adressant directement sur le site (ou la communauté) où tu a pu le trouver, non ?