Link öffnet sich erst bei Anklicken der "Hauptseite"

  • Hallo,

    ich habe einen Server und möchte über die IP Adresse diesen verwenden. Bei meiner Suche ist es so, dass ein neues Fenster mit dem Ergebnis aufgeht, wenn ich dann auf einen Link des Suchergebnisses klicke, soll im opener das ganze angezeigt werden.


    der Link ist so eingebunden:

    <a href='JavaScript:opener.parent.frames[0].showDM_afterSearch("Link.xml","system","test");'>Data</a>


    Der Link geht nur auf, wenn ich auf die Hauptseite klicke, also von wo das Suchfenster geöffnet wurde und wo der LInk angezeigt werden soll. Habe ich ein alert in der showDM_afterSearch dann funktioniert es auch, weil die Hauptseite dann wohl aktiv ist. ein focus() funktioniert aber auch nicht.


    Hat jemand irgendeine Idee, was daran falsch ist? Was ich tun könnte, dass es geht?

    Viele Grüße

  • Was sagt den die Fehlerkonsole ?

    Könnte mir vorstellen das es was mit den pfad zu tun hat , wenn es ja auf der Hauptseite geht und den anderen nicht , oder wie auch immer .

    Einfache wäre es wenn du einen Link zur Seite posten würdes und dann sagst wo es genau auftretten tut.

    Mit deinen jetzigen Angaben wird man dir nicht viel helfen können

  • Die Fehlerkonsole sagt keine Fehler.


    WEnn es mit einem alert in der Funktion showDM_afterSearch geht, kann es ja kein falscher Pfad sein und auf dem Server selbst funktioniert es auch.


    Das Problem ist, dass das im Firmennetz ist und das denke ich von außerhalb nicht zugängig ist


    Es ist halt so, ich gehe auf Suche ein neues Fenste rgeht auf, da gebe ich den Suchbegriff ein und klicke auf Suchen. Dann kommt das Suchergebnis - lauter Links auf XML-Module. Wenn ich einen Link anklicke, dann hat man das GEfühl es geht nichts. Wenn man dann aber auch die Hauptseite, von der aus der Suchbutton angeklickt wurde, klickt, dann zeigt er den zuletzte angeklickten LInk im Suchergebnis an. Nur sollte er das natürlich tun, ohne dass ich in das Fenster klicke.


    WEnn ich ein alert aufnehme, funktionert es einwandfrei, aber der Nutzer hat sich keine Lust bei jedem Link immer ein alert zu bekommen.


    Ich hoffe, es ist ein wenig verständlicher. Ich hatte die Hoffnung, dass jemand schon mal ein ähnliches Problem mit einem Server hatte.

    Viele Grüße

  • Mal das ganze rum herum mal weg.


    Wenn ein Alert kommt , und den klicke ich weg , dann wird alles angezeigt wie du es möchtest ?

    Ohne den Alert geht es nicht ?

    Könnte mir dann vorstellen da durch den Alert der weitere Aufbau des Scriptes geblockt wird , wo der rest der Seite Zeit hat sich aufzubauen.


    Ohne den Alert wird das Javascript schneller sein als die Seite und zb nach einer Id suchen die noch nicht da ist.

    Durch den Alert stop das Javscript und dann hat die Seite genug zeit bis zb die ID da ist .

    Ich weiß meine erklärungen sind Müll.

    Versuch doch mal ein setTimeout von 2-3 Sekunden da einzubauen dann siehst du zumindest ob das zustimmt was ich meine


    EDIT:

    wechsel mal den Alert in console.log() aus, und las das setTimeout erstmal weg ,dann dürfte es nach meiner Theorie auch nicht mehr gehen.

    Weil console.log() stop das Script nicht , der Alert schon

  • Ich glaube nicht, dass es ein setTimeout löst bzw. hab es ausprobiert, hat nicht geholfen. Es ist ja so, dass wenn ich die Hauptseite anklicke, dann zeigt er es ja plötzlich an, dann liegt es ja nicht an einem Laufzeitfehler, dass irgendwas nicht zugewiesen/bekannt wäre. In dem Moment, wo ich in die Seite klicke, lädt er die SEite und hebt mir die Suchbegriffe hervor. Ohne Klick macht er nichts.


    Irgendwie komme ich halt auch gar nicht weiter. Hab mal den Focus auf den Frame gelegt, aber hatte auch nicht geholfen :(

  • Grad mal geschaut, er geht noch in das Servlet, das dann noch aufgerufen wird, zur Anzeige der XML-Datei mit einem Stylesheet. Hab auch schon überlegt, ob das was mit dem Verzeichnis zu tun hat. Also wir sagen das liegt ja unter C:\... aber natürlich auch C vom Server.


    Ist aber auch sehr komisch, wenn er erst beim Anklicken der Hauptseite checken würde, dass C: auf dem Server gemeint ist und nicht auf der eigenen Festplatte. Aber das ist es wohl auch nicht, hab die Daten mal vorsichtshalber auf den PC, wo ichs ausführe, kopiert. Hat aber auch nicht geholfen

    Viele Grüße

    Kathrin

  • ja, also ich habe meine vermutungen geäußert, mehr fällt mir da jetzt auch nicht ein ohne den ganzen Code zu sehen .

    Die anderen hätten wahrscheinlich auch schon was gesagt wenn den was eingefallen wäre.

    Ich hoffe das du den Fehler noch finden tust ,doch so kann ich da nicht weiter helfen, leider läßt sich das problem jetzt auch nicht nachstellen. wo ma ansetzen könnte.


    Ich hoffe für dich das sich hier noch einen melden tut der dir weiter helfe kann.

  • Es ist folgendermaßen beim Klick auf den Suchbutton geht er hier rein:

    Suchfenster = new Object();

    Suchfenster = window.open("Suche.htm", "", "width="+W+", height="+H+", resizable=yes, scrollbars=yes, toolbar=no, status=no, menubar=no, locationbar=yes, dependent=yes");

    Suchfenster.focus();

    -> interessanterweise funktioniert es ohne Probleme, wenn ich das Suchfenster im frames[4] anzeigen lasse, also den Textframe


    Das ist nämlich der Aufbau des Fensters:

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">

    <html>

    <head>

    <title>Test</title>

    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

    <style></style>

    </head>

    <frameset rows="35,54,*" frameborder="NO" border="0" framespacing="0" bordercolor="#FFFFFF">

    <frame name="Symbol" scrolling="NO" src="Symbol.htm" marginwidth="4" marginheight="4">

    <frameset cols="80,*" frameborder="NO" border="0" framespacing="0">

    <frame name="Logo" scrolling="NO" src="logo.htm" frameborder="no" framespacing="0" marginheight="0" marginwidth="0" >

    <frame name="Head" scrolling="NO" src="kopf.htm" frameborder="no" framespacing="0">

    </frameset>

    <frameset cols="360,*" frameborder="NO" border="2" framespacing="2" bordercolor="#FFFFFF">

    <frame name="Inhalt" scrolling="YES" src="/servlet/showTOC?pfad=cobra_sfmc&id=00000000&pis=j&symbol=plus.gif">

    <frameset cols="*,0" frameborder="NO" border="2" framespacing="2" bordercolor="#FFFFFF">

    <frame name="Text" src="/servlet/showDM?pfad=test&dmc=Test.xml&id=BUTTON_OK_CANCEL&style=ts.xsl">

    <frame name="Grafik" src="grafik.htm">

    </frameset>

    </frameset>

    </frameset>

    <noframes><body bgcolor="#FFFFFF" style="font-family:Arial;">

    </body>

    </noframes>

    </html>


    Das ist der Link, den ich zusammenbastle, im Suchfenster/Ergebnis, also wird beim Klicken auf den Link showDM_afterSearch aufgerufen

    <li style=\"white-space: nowrap;\"><a target=\"Text\" href=\"JavaScript:parent.frames[0].showDM_afterSearch(""+strFileName+"",""+strSuchbegriff+"",""+strDir+"");\">"+strBezeichnung+"</a> ("+iAnzahlTreffer+")</li>



    die Funktion showDM_afterSearch:

    function showDM_afterSearch(udn, strSuch, strPfad){

    Such = strSuch;

    sizeFrame("text");

    if(strPfad.toLowerCase() == strDir.toLowerCase()){

    parent.frames[4].location.href = "/servlet/showDM?pfad="+strPfad+"&dmc="+udn+"&id=&style=cs.xsl&such="+strSuch;

    }else{

    //hier würde er nicht reingehen

    }

    }

    Und die Anzeige vom Servlet ist das hier:

    import javax.servlet.*;

    import javax.servlet.http.*;

    import java.io.*;

    import javax.xml.transform.TransformerFactory;

    import javax.xml.transform.Transformer;

    import javax.xml.transform.TransformerException;

    import javax.xml.transform.TransformerConfigurationException;

    import javax.xml.transform.Source;

    import org.xml.sax.InputSource;

    import javax.xml.transform.dom.DOMSource;

    import javax.xml.transform.stream.StreamResult;

    import javax.xml.transform.stream.StreamSource;

    import javax.xml.parsers.DocumentBuilder;

    import javax.xml.parsers.DocumentBuilderFactory;

    import javax.xml.parsers.ParserConfigurationException;

    import org.xml.sax.SAXException;

    import org.apache.xpath.XPathAPI;

    import org.w3c.dom.*;

    import javax.swing.JOptionPane;


    public class showDM extends HttpServlet {


    public void init(ServletConfig config) throws ServletException

    {

    super.init(config);

    }


    public void doGet (HttpServletRequest request,

    HttpServletResponse response)

    throws ServletException, IOException

    {


    File fDM = null;

    String strPfad = "", strDMC = "", strID = "";

    String strClassDir = "", strStyle = "";

    String strXMLPath = "", strXSLPath = "", strSuch = "";

    DocumentBuilder db = null;

    Document xmlDoc = null;

    Source xslSource = null;


    response.setContentType("text/html; charset=iso-8859-1");

    PrintWriter out = response.getWriter();


    // Uebergebenen Parameter aktLCN und pis ermitteln

    strDMC = request.getParameter("dmc");

    strPfad = request.getParameter("pfad");

    strID = request.getParameter("id");

    strStyle = request.getParameter("style");

    if (strStyle == null ) {

    strStyle = "ts.xsl";

    }

    strSuch = request.getParameter("such");

    strClassDir=getClass().getResource("showDM.class").toString();


    try {

    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();

    strXMLPath = strClassDir.substring(strClassDir.indexOf(":")+1,strClassDir.indexOf("JServ\\servlets"))+"apache\\htdocs\\"+strPfad+"\\dm\\";


    fDM = new File(strXMLPath+strDMC);

    if(fDM.exists() && fDM.canRead()) {

    xmlDoc = dbf.newDocumentBuilder().parse(fDM);

    }else {

    }

    } catch(ParserConfigurationException pce) {

    JOptionPane.showMessageDialog(null, "Error of creating DocumentBuilder", "Fehler", JOptionPane.OK_CANCEL_OPTION);

    } catch(SAXException se) {

    JOptionPane.showMessageDialog(null, "Error of parsing", "Fehler", JOptionPane.OK_CANCEL_OPTION);

    } catch(IOException ioe) {

    JOptionPane.showMessageDialog(null, "IO-error of parsing", "Fehler", JOptionPane.OK_CANCEL_OPTION);

    } catch(TransformerException te){

    JOptionPane.showMessageDialog(null, "TransformerException"+te.getMessage(), "Fehler", JOptionPane.OK_CANCEL_OPTION);

    }



    strXSLPath = strClassDir.substring(strClassDir.indexOf(":")+1,strClassDir.indexOf("JServ\\servlets"))+"apache\\htdocs\\"+strPfad+"\\stylesheet\\";

    xslSource = new StreamSource(new File(strXSLPath+strStyle));

    DOMSource ds = new DOMSource(xmlDoc);

    try{

    out.println( "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");

    TransformerFactory tFactory = TransformerFactory.newInstance();

    Transformer transformer = tFactory.newTransformer(xslSource);

    transformer.setParameter("intSprung",strID);

    transformer.setParameter("strSuch", strSuch);

    transformer.transform(ds, new StreamResult(out));

    } catch (TransformerConfigurationException tce) {

    JOptionPane.showMessageDialog(null, "TransformerConfiException-xslSource:"+tce.getMessage(), "Fehler", JOptionPane.OK_CANCEL_OPTION);

    } catch (TransformerException te) {

    JOptionPane.showMessageDialog(null, "TransformerException-xslSource:"+te.getMessage(), "Fehler", JOptionPane.OK_CANCEL_OPTION);

    }


    out.close();

    }

    }


    Was interessant ist, dass es geht, wenn ich das Suchergebnis im Frame Text anzeigen lasse, aber das geht halt nicht, weil der User ja evtl auch noch einen anderen Link vom Suchergebnis anklicken will.

    Viele Grüße

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!