2013-05-22 25 views
0

我在JavaScript中遇到了一些問題。我的問題是我有一個用戶輸入框(用戶可以輸入URL)和一個按鈕(點擊後,它將打開用戶在輸入框中輸入的URL)。JavaScript userinput URL沒有保存我的域名

這裏是我的代碼:

<input type="text" id="userurlbox"/> 
<button type="button" onClick="myFunction()">Open URL</button> 

<script> 
function myFunction() 
{ 
var x = document.getElementById('userurlbox').value; 
if (x == "") 
{ 
alert('Please enter a URL'); 
} 

else 
{ 
window.open(x ,'_blank'); 
} 
</script> 

的問題是,該URL是這樣開的:

http://mywebsite.com/USERURL 

我希望它像這樣打開:

http://USERURL 

回答

0

此代碼只添加的「http://」如果尚未包括它:

function myFunction() { 
     var x = document.getElementById('userurlbox').value; 
     if (x == "") { 
      alert('Please enter a URL'); 
     } 
     else { 
      if (x.substr(0,4).toLowerCase() === 'http') { // only test first 4 characters as we want to allow both http:// and https:// 
       window.open(x ,'_blank'); 
      } 
      else { 
       window.open('http://'+x); 
      } 
     } 
    } 
0

我只是經過測試,您需要在窗口中包含'http://'.open

<input type="text" id="userurlbox"/> 
<button type="button" onClick="myFunction()">Open URL</button> 

<script> 
function myFunction(){ 
var x = document.getElementById('userurlbox').value; 

    x = x.replace('http://'.''); // remove http:// just in-case it is there 

    if (x == "") 
    { 
     alert('Please enter a URL'); 
    }  
    else 
    { 
     window.open('http://' + x ,'_blank'); 
    } 
} 

</script> 
+0

謝謝!但是,如果用戶已經將http://添加到了url輸入框中,我該如何解決這個問題呢? – iOSDec

+0

我剛剛更新了我的文章 - 不錯的和簡單的解決方案,並易於閱讀 –

+0

請注意,並非所有的網址都是http,有些可能是https。要自動檢測此類行爲,請完全省略該協議。只需在//中添加已消毒的網址即可。 –

-1

我不知道,如果你可以使用窗口覆蓋相對/絕對URL行爲.open函數,所以一個可行的解決方案是檢查url是否以https?://開頭,如果沒有則前置「//」。始於//的網址始終會被視爲絕對網址。