js funktioniert in ie, gibt in netsc. aber 0 zurück
max-joseph kraus
- javascript
0 Calocybe
hallo!
ich habe dank der hilfe dieses forums ein javascript zum senden von suchanfragen an verschiedenen spezialsuchmaschinen geschrieben. (unter www.oncocenter.de/bereiche/pulmo unten rechts der "quick finder". das script habe ich auf meinen seiten als externen link eingebunden und an dieser nachricht unten eingefügt).
nach auswahl der suchmaschine wird das suchwort direkt an die searchengines übergeben und es öffnet sich eine neue seite mit den suchergebnissen (danke bernhard!!)
im ie 5.0 funktioniert alles prima, aber bei netscape (4.7 und 6.0) wird als ergebnis immer "null" an der zu öffnenden url angehängt und es geht gar nichts.
hat jemand eine idee, woran das liegen könnte?
meine vermutung: ganz unten in dem script bei window.document.suche.elements[0].name=searchterm
sagt mir der NetObjects Script Builder, daß "name" nur mit dem ie bzw Jscript verwendet werden kann. Kann das der Grund sein? Warum kommt dann keine Fehlermeldung? Und wenn es der Grund ist, habt ihr dann vielleicht eine Lösung?
Danke !!!
max
<!--
/*
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Medmatic Quick Finder
Copyright 2001 by Max-Joseph Kraus (medmatic.com)
Dieses Script ist urheberechtlich geschützt. Keine Vervielfältigung, Veränderung, Weitergabe,
Verkauf ohne schriftliche Genehmigung durch medmatic.
medmatic widmet sich der medizinischen datenbverarbeitung und der förderung eines medizinischen
informationsmangament. bei rückfragen wenden sie sich bitte an
www.medmatic.com
mjk@medmatic.com.
medmatic ist ein eigetragenes warenzeichen --- medmatic is a registred trademark
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
*/
var searchengine;
var searchterm;
var datab;
var datab_value;
var cmd;
var cmd_value;
function select_searchengine()
{
searchengine=window.document.database.auswahl.options.value;
window.document.suche.action=searchengine;
if(searchengine == "http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?orig_db=PubMed&cmd=search&db=Pubmed&term=")pubmed();
if(searchengine == "http://www.chestjournal.org/cgi/search?fulltext=") chest();
if(searchengine == "http://ajrccm.atsjournals.org/cgi/search?&fulltext=") chest();
if(searchengine == "http://circ.ahajournals.org/cgi/search?vfulltext=") chest();
if(searchengine == "http://www.bmj.com/cgi/search?afulltext=") chest();
if(searchengine == "http://jac.oupjournals.org/cgi/search?vfulltext=") chest();
if(searchengine == " http://thorax.bmjjournals.com/cgi/search?fulltext=") chest();
function pubmed()
{
searchterm="term";
datab="orig_db";
datab_value="Pubmed";
cmd="cmd";
cmd_value="Search";
}
function chest()
{
searchterm="fulltext";
}
window.document.suche.elements[0].name=searchterm;
window.document.suche.elements[1].name=datab;
window.document.suche.elements[1].value=datab_value;
window.document.suche.elements[2].name=cmd;
window.document.suche.elements[1].value=cmd_value;
}
//-->
Hi!
Zunaechst verlinke ich die relavanten Seiten, damit andere besser nachvollziehen koennen, worum es hier geht. Solltest Du in Zukunft selber tun.
http://www.oncocenter.de/bereiche/pulmo
view-source:http://www.oncocenter.de/bereiche/pulmo
view-source:http://www.oncocenter.de/bereiche/pulmo/java/mm_qf.js
Dort findet man ein <form name="database"> mit einem <select name="auswahl"> sowie ein
<form name="suche" action="" method=get onSubmit="select_searchengine()" target="_blank">
mit
<input type=text name="Input" size=13 maxlength=80 value="Suchbegriffe">
<input type=hidden name="Input" value="">
<input type=hidden name="Input" value="">
<input type=submit value="such !" name="submit">
1.) Warum trennst Du "auswahl" und die restlichen Felder? Warum nicht alle ins selbe Form?
2.) Du hast mehrere INPUTs mit demselben Namen (naemlich "Input")! Das ist zwar nicht falsch, aber wenn man das verwendet, sollte man genau wissen, warum. Aber ok, Du adressierst diese dann ja richtig mit window.document.suche.elements[0].name.
nach auswahl der suchmaschine wird das suchwort direkt an die searchengines übergeben und es öffnet sich eine neue seite mit den suchergebnissen (danke bernhard!!)
im ie 5.0 funktioniert alles prima, aber bei netscape (4.7 und 6.0) wird als ergebnis immer "null" an der zu öffnenden url angehängt und es geht gar nichts.
Das ist bei fehlerhaften Scripts normal. ;-)
hat jemand eine idee, woran das liegen könnte?
»»
meine vermutung: ganz unten in dem script bei window.document.suche.elements[0].name=searchterm
sagt mir der NetObjects Script Builder, daß "name" nur mit dem ie bzw Jscript verwendet werden kann. Kann das der Grund sein? Warum kommt dann keine Fehlermeldung? Und wenn es der Grund ist, habt ihr dann vielleicht eine Lösung?
Weiss nicht. Netscape meint dazu: "The name property initially reflects the value of the NAME attribute. Changing the name property overrides this setting." (http://developer.netscape.com/docs/manuals/js/client/jsref/text.htm#1193369) Koennte also genau das gemeint sein. Fuer die HIDDENs wird das bei Netscapes Referenz aber nicht erwaehnt. Wie gesagt waere eine eindeutuge Benennung von Anfang an sowieso anzuraten, ich sehe auch nichts, was dagegen spricht.
var searchengine;
var searchterm;
var datab;
var datab_value;
var cmd;
var cmd_value;
function select_searchengine()
{
searchengine=window.document.database.auswahl.options.value;
3.) So geht das nicht. Wie man den Wert einer gerade ausgewaehlten Option eines Selects herausfindet, erfaehrst Du auf </selfhtml/sfarchiv/1999_4/t09014.htm#a45656>.
window.document.suche.action=searchengine;
if(searchengine == "http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?orig_db=PubMed&cmd=search&db=Pubmed&term=")pubmed();
if(searchengine == "http://www.chestjournal.org/cgi/search?fulltext=") chest();
if(searchengine == "http://ajrccm.atsjournals.org/cgi/search?&fulltext=") chest();
if(searchengine == "http://circ.ahajournals.org/cgi/search?vfulltext=") chest();
if(searchengine == "http://www.bmj.com/cgi/search?afulltext=") chest();
if(searchengine == "http://jac.oupjournals.org/cgi/search?vfulltext=") chest();
if(searchengine == " http://thorax.bmjjournals.com/cgi/search?fulltext=") chest();
4.) Dies scheint die einzige Stelle zu sein, an der der Wert der ausgewaehlten Search-Engine verwendet wird. Warum gibst Du nicht einfach jeder der Search-Engines eine Nummer, dann wird der Vergleich doch viel weniger aufwendig?
function pubmed()
5.) Du hast die alte Funktion noch nicht beendet! functions in functions sind imho nicht moeglich. Und hier wie in den meisten Faellen auch nicht notwendig.
{
searchterm="term";
datab="orig_db";
datab_value="Pubmed";
cmd="cmd";
cmd_value="Search";
}
function chest()
{
searchterm="fulltext";
}
window.document.suche.elements[0].name=searchterm;
window.document.suche.elements[1].name=datab;
window.document.suche.elements[1].value=datab_value;
window.document.suche.elements[2].name=cmd;
window.document.suche.elements[1].value=cmd_value;
6.) Sollte der letzte Index eine 2 sein?
}
//-->
HTH, So long