2012-11-06 22 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> 

Hi,javascript: gửi thông số tùy chỉnh với window.open() nhưng nó không làm việc

On bấm vào một nút, tôi đang mở (trang web của tôi) new website Tôi có hai text fields (Một Trường văn bản và trường mật khẩu khác), tôi đang cố gửi giá trị này đến cửa sổ đã mở khác.

Nhưng nó không hoạt động như tôi muốn.

Tôi đã thử những cách sau đây

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' 

Ai có thể vui lòng giúp tôi nếu điều này là có thể hay không ??

Xin lỗi vì các chi tiết chưa hoàn chỉnh, yêu cầu Bài đăng của nó.

+7

Bạn có biết rằng bằng cách thông qua các lĩnh vực mật khẩu để một 'window.open' là ** nguy hiểm ** vì nó chưa được mã hóa và ở chế độ đơn giản để mọi người xem? –

Trả lời

8

nếu bạn muốn vượt qua các biến POST, bạn phải sử dụng một Form 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> 

hay:

nếu bạn muốn vượt qua GET biến trong một URL, hãy viết chúng mà không cần đơn dấu ngoặc kép :

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

dưới đây là cách để tạo ra các chuỗi trên với biến javascrpt:

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

trong tài liệu có url đó, bạn phải đọc các tham số GET. nếu trong php, hãy sử dụng:

$_GET['username'] 

lưu ý: để truyền mật khẩu theo cách đó là một lỗ hổng bảo mật lớn!

+0

Biến GET là * đến từ các biến JavaScript * – Quentin

1

Để ghép các chuỗi, hãy sử dụng toán tử +.

Để chèn dữ liệu vào URI, hãy mã hóa dữ liệu cho URI.

Xấu:

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

Tốt:

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; 

Các máy chủ sẽ phải xử lý chuỗi truy vấn để tận dụng các dữ liệu. Bạn không thể gán cho các trường biểu mẫu tùy ý.

… nhưng không kích hoạt cửa sổ mới hoặc vượt qua thông tin đăng nhập trong URI (nơi chúng được tiếp xúc với các cuộc tấn công trên vai và có thể được ghi lại).

1

Bạn có thể sử dụng điều này, nhưng vẫn còn một vấn đề an ninh

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

Lưu ý: Không sử dụng phương pháp này để chuyển thông tin nhạy cảm như username, password.

0

Hãy tìm mã ví dụ này, bạn có thể sử dụng biểu mẫu ẩn với POST để gửi dữ liệu đến rằng URL của bạn như dưới đây:

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(); 

} 
Các vấn đề liên quan