2012-11-06 15 views
5
<html> 
<head> 
<script> 
function open_win() 
{ 
    window.open("http://localhost:8080/login","mywindow") 
} 
</script> 
</head> 
<body> 

<input type="button" value="Open Window" onclick="open_win()"> 

</body> 
</html> 

Cześć,javascript: wysyłanie niestandardowe parametry z window.open(), ale jej nie działa

Na kliknięcie przycisku, ja otwierające new website (mojej stronie internetowej) Mam dwie text fields (jeden Pole tekstowe i inne pole hasła), próbuję wysłać te wartości do drugiego otwartego okna.

Ale nie działa tak, jak chcę.

Próbowałem następujące sposoby

1. window.open("http://localhost:8080/login?cid='username'&pwd='password'","mywindow") 

2. window.open("http://localhost:8080/login","mywindow") 
    mywindow.getElementById('cid').value='MyUsername' 
    mywindow.getElementById('pwd').value='mypassword' 

Czy ktoś proszę mi pomóc, jeśli jest to możliwe, czy nie ??

Przepraszamy za niekompletne szczegóły, jest to prośba o wpis.

+7

Czy wiesz, że przechodząc przez pole hasło na 'window.open' jest ** niebezpieczne **, ponieważ jest nieszyfrowane i widoczne dla wszystkich? –

Odpowiedz

8

jeśli chcesz przekazać zmienne POST, trzeba skorzystać z formularza HTML:

<form action="http://localhost:8080/login" method="POST" target="_blank"> 
    <input type="text" name="cid" /> 
    <input type="password" name="pwd" /> 
    <input type="submit" value="open" /> 
</form> 

czyli

jeśli chcesz przekazać GET zmiennych w adresie URL, zapisać je bez pojedynczych cudzysłowach :

http://yourdomain.com/login?cid=username&pwd=password 

oto jak utworzyć ciąg powyżej zmiennych javascrpt:

myu = document.getElementById('cid').value; 
myp = document.getElementById('pwd').value; 
window.open("http://localhost:8080/login?cid="+ myu +"&pwd="+ myp ,"MyTargetWindowName"); 

w dokumencie z tym adresem URL, należy odczytać parametry GET. jeśli jest w php, użyj:

$_GET['username'] 

Pamiętaj: przekazywanie haseł w ten sposób jest dużym przeciekiem bezpieczeństwa!

+0

Zmienne GET * pochodzą ze zmiennych JavaScript * – Quentin

1

Aby połączyć ciągi, należy użyć operatora +.

Aby wstawić dane do identyfikatora URI, należy go zakodować dla identyfikatorów URI.

Źle:

var url = "http://localhost:8080/login?cid='username'&pwd='password'" 

Dobre: ​​

var url_safe_username = encodeURIComponent(username); 
var url_safe_password = encodeURIComponent(password); 
var url = "http://localhost:8080/login?cid=" + url_safe_username + "&pwd=" + url_safe_password; 

Serwer będzie musiał przetwarzać ciąg kwerendy do korzystania z danych. Nie możesz przypisać do dowolnych pól formularza.

... ale nie uruchamiaj nowych okien ani nie przekazuj poświadczeń w URI (gdzie są narażone na ataki przez ramię i mogą być rejestrowane).

1

Można to wykorzystać, ale pozostaje problem z zabezpieczeniami

<script type="text/javascript"> 

function fnc1() 
{ 
    var a=window.location.href; 

    username="p"; 
    password=1234; 
    window.open(a+'?username='+username+'&password='+password,""); 

} 

</script> 
<input type="button" onclick="fnc1()" /> 
<input type="text" id="atext" /> 
0
You can try this instead 


var myu = document.getElementById('myu').value; 
var myp = document.getElementById('myp').value; 
window.opener.location.href='myurl.php?myu='+ myu +'&myp='+ myp; 

Uwaga: Nie należy używać tej metody do przekazywania poufnych informacji takich jak nazwa użytkownika i hasło.

0

Proszę odnaleźć ten kod przykład, można użyć ukrytego formularz z POST do wysyłania danych do adresu URL jak poniżej:

function open_win() 
{ 
    var ChatWindow_Height = 650; 
    var ChatWindow_Width = 570; 

    window.open("Live Chat", "chat", "height=" + ChatWindow_Height + ", width = " + ChatWindow_Width); 

    //Hidden Form 
    var form = document.createElement("form"); 
    form.setAttribute("method", "post"); 
    form.setAttribute("action", "http://localhost:8080/login"); 
    form.setAttribute("target", "chat"); 

    //Hidden Field 
    var hiddenField1 = document.createElement("input"); 
    var hiddenField2 = document.createElement("input"); 

    //Login ID 
    hiddenField1.setAttribute("type", "hidden"); 
    hiddenField1.setAttribute("id", "login"); 
    hiddenField1.setAttribute("name", "login"); 
    hiddenField1.setAttribute("value", "PreethiJain005"); 

    //Password 
    hiddenField2.setAttribute("type", "hidden"); 
    hiddenField2.setAttribute("id", "pass"); 
    hiddenField2.setAttribute("name", "pass"); 
    hiddenField2.setAttribute("value", "[email protected]$"); 

    form.appendChild(hiddenField1); 
    form.appendChild(hiddenField2); 

    document.body.appendChild(form); 
    form.submit(); 

} 
Powiązane problemy