2017-09-19 2 views
1

Okay, also ich bin so weit wie möglich gegangen. Zunächst sind hier die Voraussetzungen ich nicht ändern kann:IP-Oktett entdecken und dann zu einer href-URL machen?

  • Windows-Plattform
  • Kann nur IE verwenden 11

Mein Ziel: die Client-IP-Adresse ermitteln, legen Sie dann die Variable in eine URL auf ein Website. Im Grunde wird dieser Link den Benutzer auf die "Startseite" des Geräts führen.

Da es sich um ein Windows-Betriebssystem handelt, kann ich einen ActiveX-Aufruf genauso lange verwenden, wie er für eine einzelne Funktion spezifisch ist. In diesem Fall besteht die Funktion darin, die IP-Adresse des Clients zu erhalten.

<script> 
      var objLocator = new ActiveXObject("WbemScripting.SWBemLocator"); 
      var objService = objLocator.ConnectServer(".","root\\CIMV2"); 
      instances = objService.ExecQuery(
      "SELECT Caption, IPAddress, MACAddress " 
      + "FROM Win32_NetworkAdapterConfiguration"); 
      e = new Enumerator(instances); 

      var IPAddy = "" 
      for(;!e.atEnd();e.moveNext()) 
      { 
      nic = e.item(); 
      if(nic.IPAddress!=null) 
      { 
      var ipArray = VBArray(nic.IPAddress).toArray(); 
      IPAddy = IPAddy + ipArray[0]+"<br>"; 
      } 
      } 
</script> 

Nun, da ich die IP-Adresse als ‚iPaddy‘ ich es abzustreifen das vierte Oktett runter - die von aaa.bbb.ccc.ddd ‚ddd‘.

<script> 
    var input = IPAddy; 
    var split = input.split('.'); 
    var TPage = split[3]; 
</script> 

nun der Teil ich nicht zur Arbeit richtig machen kann. (Ich dachte, die Antwort war here, aber es funktionierte nicht für mich.) Ich möchte die Variable 'TPage' nehmen und es in eine URL für den PC-Benutzer machen.

Im Körper der HTML-Datei:

<div class="w3-bar-block w3-black"> 
    <a class="w3-bar-item w3-button w3-blue" href="bodytest016.html">Start</a> 
    <a class="w3-bar-item w3-button w3-text-white" href="pages/' + TPage + '.html" target="bigWindow">Your Computer Information</a> 
    <a class="w3-bar-item w3-button w3-text-white" href="pages/links.html" target="bigWindow">Your Web Pages</a> 
    <a class="w3-bar-item w3-button w3-text-white" href="pages/help.html" target="_blank">Help</a> 
    </div> 

I durch Zugabe eines kleinen Abschnitts der Seite, dass die variablen Skripte funktionieren geprüft habe meine Arbeit zu überprüfen:

<script> 
    document.write(IPAddy); 
    document.write(TPage); 
</script> 

Bei Am Ende des Tages möchte ich den IE-Browser auf die "Startseite" öffnen. Die Seite wird dann meine IP-Adresse als 95.10.10.126 identifizieren und ich kann auf den Link "Your Computer Information" klicken, der mich zu ./pages/126.html führen soll.

Was mache ich also falsch mit: ... href = "pages/'+ TPage +' .html" (der Link für Ihre Computerinformationen)? In IE sieht es so aus: "file: /// F: /pages/'+%20TPage%20+%20'.html"

Alle und alle Ratschläge werden sehr geschätzt. Vielen Dank für Ihre Zeit.

Antwort

1

Ihr Problem ist in href="pages/' + TPage + '.html"; Sie können eine JavaScript-Variable nicht direkt im HTML-Code verwenden.

Stattdessen müssen Sie zuerst das Element ausrichten. In meinem Beispiel tue ich dies mit document.getElementById, aber beachten Sie, dass Sie ein id Attribut für das Element benötigen, um diesen Selektor zu verwenden. Nach der Auswahl müssen Sie das Attribut href ändern. Sie können Ihre feste Zeichenfolge mit dem JavaScript-Variable in diesem Zusammenhang mit einigen einfachen Verkettung mit + kombinieren:

var TPage = '127.0.0.1'; 
 
var link = document.getElementById('link'); 
 
link.href = "pages/" + TPage + ".html"; 
 
console.log(link);
<a id="link">Your Computer Information</a>

hoffe, das hilft!:)

0

Die HTML:

<a href="pages/' + TPage + '.html">Your Computer Information</a> 

weiß nichts über die JavaScript-Variable TPage, die Sie das letzte Oktett haben gespeichert und nimmt stattdessen, dass Sie die wörtliche ' + TPage + ' in der URL angezeigt werden soll. Da einige davon keine gültigen Zeichen in der URL sind, werden sie in die% codierte Zeichenfolge übersetzt, die Sie sehen.

Was Sie wahrscheinlich tun möchten, ist JavaScript haben die URL festgelegt, auf die zeigt. Es gibt viele Möglichkeiten, dies zu tun.

Unter der Annahme, dass Sie Ihren JavaScript getrennt von Ihrem HTML behalten möchten, eine Möglichkeit, das zu tun, ist wie folgt:

  • eine id auf den Link in Frage die href der Verbindung
  • Änderung hinzufügen in Frage nach einem Platzhalter für das IP-Oktett
  • fügen Sie einige JavaScript-Code (am unteren Rand der Seite, es muss unter dem Link sein), die die URL in der href behebt.

Es könnte wie folgt aussehen:

<a id="info-link" href="pages/${IP_OCTET}.html">Your Computer Information</a> 
<script> 
    var link = document.getElementById('info-link'); 
    link.href = link.href.replace('${IP_OCTET}', TPage); 
</script> 
0

Fantastic! Beide Antworten sind großartig.

Von Obsidian Alter Antwort, ich dieses Skript erstellt:

<script> 
    var input = IPAddy; 
    var split = input.split('.'); 
    var TPage = split[3]; 
    var link = document.getElementById('link'); 
    link.href = "pages/" + TPage + ".html"; 
    console.log(link); 
</script> 

Allerdings brauchte ich PeterJCLaw Antwort, um es zu arbeiten. Ich musste dieses Skript am unteren Rand des Menü-DIV-Objekts platzieren, direkt nach den Anker-Tag-Verknüpfungen. Gefällt mir:

<div class="w3-bar-block w3-black"> 
    <a class="w3-bar-item w3-button w3-blue" href="bodytest016.html">Start</a> 
    <a class="w3-bar-item w3-button w3-text-white" id="link" target="bigWindow">Your Computer Information</a> 
    <a class="w3-bar-item w3-button w3-text-white" href="pages/links.html" target="bigWindow">Your Web Pages</a> 
    <a class="w3-bar-item w3-button w3-text-white" href="pages/help.html" target="_blank">Help</a> 
    <script> 
     var input = IPAddy; 
     var split = input.split('.'); 
     var TPage = split[3]; 
     var link = document.getElementById('link'); 
     link.href = "pages/" + TPage + ".html"; 
     console.log(link); 
    </script> 
</div> 

Woo-hooo! Danke euch beiden!

Verwandte Themen