Nach Funktion wieder zurück

  • Hallo,

    ich bin ein ziemlicher JavaScript Neuling und habe folgendes Problem:
    Wir arbeiten mit dem ERP System Navision und setzen seit wenigen Tagen SharePoint Services als Interne Wissensdatenbank ein. Es stand die Anforderung im Raum direkt von SharePoint aus zu Navision auf eine Kundenkarte zu verlinken, allerdings gibt Scharepoint nicht die möglichkeit einen Hyperlink mit "navision://" zu beginnen. Also habe ich ein JavaScript gebastelt und auf unseren Web Server gelegt, welches dann Navision aufruft.
    Mein Problem ist jetz, dass ich nach dieser Funktion wieder zurück auf die SharePoint Seite muss, die leere php Seite aber stehen bleibt.
    Kann mit hierbei jemand helfen?

    Hier noch der bisherige Code:


    <script type="text/javascript">
    <!--


    var link1,link2, link3, link4,link5

    link1 = "navision://client/run?servername=192.168.100.5%26database=Test%26company=Test%26target=Form%20"
    link2 = get_url_param('Art');
    link3 ="%26view=SORTING(Field1)%26servertype=MSSQL%26position=Field1=0("
    link4 = get_url_param('Nr');
    link5 = ")"
    window.location.href = (link1+link2+link3+link4+link5);


    function get_url_param(name)
    {
    name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");

    var regexS = "[\\?&]"+name+"=([^&#]*)";
    var regex = new RegExp( regexS );
    var results = regex.exec( window.location.href );

    if ( results == null )
    return "";
    else
    return results[1];
    }


    //-->
    </script>

  • Weis niemand eine Lösung / einen Ansatz?
    Oder bin ich hier mit meinem Thema falsch?

  • Hm kannst du das vllt bischen besser erklären , verstehe es nicht ganz

    Außerdem:
    Warum den nicht eine Phpumleitung verwenden sondern eine Jsumleitung?

  • Hey,

    das von SharePoint aufgerufene JavaScript soll nur über einen Link unser ERP System ansprechen. Das heißt, jemand schreibt im SP einen neuen Beitrag, der eine Kundennummer enthält. Diese wird per Hyperlink verlinkt mit /link.php?Nr=123456&Art=70029 (die Nummer ist die Kundennummer, und die Art die Form ID in Navision) nach ausführen dieser Funktion soll der User aber wieder direkt auf die SharePoint Page kommen.
    Den Befehl javascript:history.back() hat es nie ausgeführt, weil die Funktion das PHP Fenster deaktivierte.
    Ich konnte das ganze allerdings im Moment über ein TimeOut Lösen. D.h. ich schließe jetzt das aktivierte Fenster eigentlich bevor ich den den Link zu Navision ausführe. Hier nochmal der Code:

    <script type="text/javascript">
    <!--


    var link1,link2, link3, link4,link5,url

    link1 = "navision://client/run?servername=192.168.100.5%26database=Test%26company=Test%26target=Form%20"
    link2 = get_url_param('Art');
    link3 ="%26view=SORTING(Field1)%26servertype=MSSQL%26position=Field1=0("
    link4 = get_url_param('Nr');
    link5 = ")"
    url = (link1+link2+link3+link4+link5);

    function get_url_param(name)
    {
    name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");

    var regexS = "[\\?&]"+name+"=([^&#]*)";
    var regex = new RegExp( regexS );
    var results = regex.exec( window.location.href );

    if ( results == null )
    return "";
    else
    return results[1];
    }

    var t=setTimeout("javascript:history.back()",1);

    document.location.href = url;


    //-->
    </script>


    Oder denkst du das wäre anderst einfacher zu lösen?


    PS: Ich bin ja heilfroh das es wenigstens noch Menschen gibt, denen Ihre kostbare Zeit nicht zu schade für so kluge Kommentare ist...

  • Nuja ein Timeout klinkt hier ziemlich nach "fusch" und ich glaube das wäre einfacher/zuverlässiger zu lösen aber wenn ich erlich bin steh ich immer noch auf dem Schlauch

    Das /link.php?Nr=123456&Art=70029 muss nur aufgerufen werden aber nichts gemacht ?

    Wenn es alles mit JS gehen soll dann würde ich einen Iframe basteln und die Actionen sprich die Links wie /link.php?Nr=123456&Art=70029 versteckt an diesen iframe posten

    Weis aber nicht ob das dein Problem ist, bin erst heute abend wieder

  • Also,

    eigentlich soll dieser Link Aufgerufen werden:
    navision://client/run?servername=192.168.100.5%26database=Test%26com pany=Test%26target=Form%20[NAVISIONFORMID]%26view=SORTING(Field1)%26servertype=MSSQL%26pos ition=Field1=0([KUNDENNUMMER])")

    Navisoinformid und Kundennummer sind hierbei variable strings. Dieser Link öffnet wenn man ihn in den Explorer eingibt sofort Navision. Ich kann allerdings im Sharepoint wie gesagt keinen Hyperlink der mit "navision://" beginnt einfügen.

    --> also muss ich einen Hyperlink auf einen http:// link einfügen

    Das war am Anfang meine Aufgabenstellung, ich hatte vorher noch kein JavaScript und noch kein PHP programmiert. Ich bin Navision Programmier.

    Ich wusste das ich bei PHP Dokumenten mehrere Parameter mitgeben und verarbeiten kann. Deshalb der Link auf das PHP Dokument "http://sharepoint//link.php?Nr=123456&Art=70029" (also mit den 2 variablen nr--> Kundennummer, art--> Navisionform ID.

    Im Script lese ich dann über die Funktion Get_URL_PARAM die Parameter aus
    function get_url_param(name)
    {
    name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
    var regexS = "[\\?&]"+name+"=([^&#]*)";
    var regex = new RegExp( regexS );
    var results = regex.exec( window.location.href );
    if ( results == null )
    return "";
    else
    return results[1];
    }

    und setzte mir dann den Link zusammen:
    link1 = "navision://client/run?servername=192.168.100.5%26database=Test%26com pany=Test%26target=Form%20"
    link2 = get_url_param('Art');
    link3 ="%26view=SORTING(Field1)%26servertype=MSSQL%26pos ition=Field1=0("
    link4 = get_url_param('Nr');
    link5 = ")"
    url = (link1+link2+link3+link4+link5);

    Jetzt habe ich die URL die ich aufrufen möchte, denn dann öffnet sich mein Navision. Nach dem Aufruf möchte ich aber zurück auf die SharePoint seite, von der ich das php ("http://sharepoint//link.php?Nr=123456&Art=70029") aufgerufen habe.

    Hierzu habe ich zuerst dem Timer gestartet und im Anschluss an diesen den Back Befehl ausgeführt:
    var t=setTimeout("javascript:history.back()",1);
    document.location.href = url

    Das Problem hierbei war, dass sobald ich die URL aufrufe das Navision aktiviert war und das PHP im Hintergrund. Das JavaScript ist also nach meinem Link ins Navision nicht mehr weiter gelaufen.

  • Langsamm verstehe ich

    Diese Zwischenseite mit dem JS kannst du dir sparen, wenn du es mit PHP machen würdest, könntest du nach Verarbeitung der Parameter, eine Headerweiterleitung basteln

    mfg

  • Hi,

    mit dem JS-Befehl: history.back(); kannst du ohne Probleme auf die Aufrufende Seite zurück springen ;)

    Gruß, King_of_Kings