2015-11-17 44 views
-3
window.open("http://www.w3schools.com") // open properly 

window.open("www.w3schools.com","_blank") // it adds my localhost as prefix. 

我知道它應該以這種方式工作,但我希望打開一個沒有前綴的url。有沒有辦法做到這一點?用window.open打開一個非http url

<!DOCTYPE html> 
    <html> 
    <body> 
     <p>Click the button to open a new browser window.</p> 
     <button onclick="myFunction()">Try it</button> 
    <script> 
    function myFunction() { 
     window.open("www.w3schools.com"); 
    } 
    </script> 
    < a href="google.com">direct</a> 
    </body> 
    </html> 

問題陳述 - 用戶將在應用程序中輸入像「abcd.com」這樣的網址,我必須將其與鏈接相關聯。大多數用戶沒有輸入完整的網址。

根據輸入下面我加入這個

<button onclick="myFunction('facebook.com/')">Try it</button> 

<script> 
    function myFunction(url) { 
      var check = url.substring(0, 4); 
      if (check == "http") { 
        window.open(url); 
      } else { 
       window.open('//' + url); 
      } 
     } 
</script> 
+1

對於靜態代碼,這個問題沒什麼意義 - 你要麼打開一個外部URL,要麼打開一個相對的URL。這應該與用戶輸入有關,即用戶在某處輸入「www.w3schools.com」,並且您想打開該站點 - 那麼您需要一些代碼來接收用戶輸入,檢查協議是否存在,以及如果沒有添加它。 (但是,這仍然可以通過僅通過HTTP或HTTPS提供的網站留下問題,您將如何挑選正確的網站?) – CBroe

+0

是啊..用戶只需輸入abcd.com ..我必須將其與鏈接相關聯。存在問題... – rinuthomaz

回答

3

的URL 必須有一個方案。如果您使用相對URL,則該計劃將從當前頁面計算得出。 (如果您使用僅包含路徑部分的相對URL,那麼您還將獲取當前頁面的主機名,並且如果路徑本身是相對路徑,則會將當前頁面路徑引導至最後的/ ...這是你的例子中發生的事情)。

瀏覽器近年來採取了不在地址欄中顯示方案,但該URL仍然必須有一個方案(即使你看不到它)。

+0

與方案相關的URL也可以在這裏工作,例如, '// www.w3schools.com'。 –

+0

是的,但URL仍然有一個方案。 – Quentin

+0

是的,但你不必在這種情況下指定它,所以也許這將更適合提問者。 –

相關問題