2017-09-19 71 views
1

好吧,我儘可能走了。首先這裏有先決條件我不能改變:發現IP八位組,然後將其設爲href網址?

  • Windows平臺
  • 只能使用IE 11

我的目標:檢測客戶端的IP地址,然後將這個變量將在一個網址網頁。基本上,這個鏈接將使用戶訪問該設備的「主頁」。

由於它是一個Windows操作系統,我可以使用ActiveX調用,因爲它只針對單個函數。在這種情況下,該功能是獲取客戶端的IP地址。

<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> 

現在,我有IP地址爲「IPAddy」我將剝離下來,以獲得第四個八位 - 在「DDD」 aaa.bbb.ccc.ddd格式的。

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

現在我不能正常工作了。 (我認爲答案是here,但它不適用於我。)我想將變量'TPage'並將其設置爲PC用戶的URL。

在HTML文件的正文:

<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> 

我已經簽了可變腳本做工作,通過增加頁面的一個小部分,檢查我的工作:

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

在在一天結束的時候,我想打開IE瀏覽器到「起始頁面」。然後頁面會將我的IP地址標識爲95.10.10.126,我將能夠點擊鏈接「您的計算機信息」,該鏈接應該帶我到./pages/126.html。

那麼,我在做什麼錯了: ... href =「pages /'+ TPage +'.html」(您的計算機信息鏈接)?在IE中,它看起來像這樣:「file:/// F:/pages/'+%20TPage%20+%20'.html」

任何和所有的建議非常感謝。感謝您的時間。

回答

1

你的問題是在href="pages/' + TPage + '.html";你不能直接在HTML中使用JavaScript變量。

相反,您首先需要定位元素。在我的示例中,我通過document.getElementById執行此操作,但請注意,您將需要元素上的id屬性才能使用該選擇器。一旦選定,您需要更改href屬性。您可以將固定字符串與JavaScript變量在這方面與使用+一些簡單的串聯組合:

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>

希望這有助於!:)

0

的HTML:

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

不知道,你必須存儲在最後一個字節的JavaScript變量TPage任何東西,而是假定您想要的文字' + TPage + '出現在URL中。由於其中有些字符不是url中的有效字符,因此它們會轉換爲您所看到的%編碼字符串。

你可能想要做的是讓JavaScript設置指向的url。有很多方法可以做到這一點。

假設你要保持你的JavaScript分開你的HTML,這樣做的一個方法如下:

  • 添加id的鏈接有問題
  • 更改鏈接在href問題有一個IP八位字節的佔位符
  • 添加一些JavaScript代碼(在頁面的底部,它必須在鏈接下),它修復了href中的網址。

它可能是這個樣子:

<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

太棒了!兩個答案都很棒。

從黑曜石年齡的回答,我創造了這個腳本:

<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> 

不過,我需要PeterJCLaw的迴應得到它的工作。我必須將該腳本放在菜單DIV對象的底部,緊跟在錨標記鏈接之後。就像這樣:

<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> 

宇HOOO!謝謝你們倆!

相關問題