2015-04-15 16 views
5

Tôi có chức năng sau được xác định trong trang web của mình. Nó hoạt động cho một số người, không phải cho người khác. Trường hợp ngoại lệ xảy ra trên dòng cuối cùng trong phương thức, nơi nối là. Tôi tin rằng vì ký tự dấu chấm hỏi của url chỉ định chuỗi truy vấn đang được xem như là toán tử bậc ba.Lý do không xác định cho lỗi "Dự kiến ​​':'" trong javascript

Có điều gì ở đây mà tôi không nhìn thấy hoặc có cách nào tốt hơn để xây dựng chuỗi này không?

Biến url có giá trị: "mywebpage.aspx ACCOUNTNUMBER = 123456"

function popUp(url) { 
    var myleft = (screen.width) ? (screen.width - 750)/2 : 100; 
    var mytop = (screen.height) ? (screen.height - 300)/2 : 100; 
    var id = new Date().getTime(); 

    eval("page" + id + " = window.open(" + url + ", '" + id + "', 'toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=0,width=900,height=325, top='" + mytop + "',left='" + myleft +");"); 
} 
+3

Bạn cần phải thêm 'url' vào' ''để javascript biết đó là chuỗi. – Liam

+7

Bạn không cần phải làm điều này với 'eval()', và như trong mọi trường hợp liên quan đến 'eval()' có nghĩa là bạn * không nên * làm điều đó với 'eval()'. – Pointy

+0

Tắt chủ đề: http://stackoverflow.com/questions/197769/when-is-javascripts-eval-not-evil – isherwood

Trả lời

11

Bạn sẽ loại bỏ các "dấu ngoặc kép trong dấu ngoặc kép" vấn đề bằng cách tránh eval():

window["page" + id] = 
    window.open(url, id, 'toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=0,width=900,height=325, top=' + mytop + ',left=' + myleft); 

Bạn cũng nên chắc chắn rằng bạn sử dụng một "id "giá trị đóng vai trò là số nhận dạng hợp lệ (bắt đầu bằng ký tự không phải chữ số, cụ thể) hoặc Internet Explorer sẽ phát sinh lỗi.

0

sử dụng encodeURIComponent(url) thay vì sử dụng url tinh khiết trong window.open

Chức năng này mã hóa ký tự đặc biệt. Ngoài ra, nó mã hóa các ký tự sau:, /? : @ & = + $ #

Thông tin thêm here

+3

Tôi không chắc chắn điều này giải quyết vấn đề thực tế. – Liam

+1

Đồng ý. Đây phải là một bình luận –

3

Bạn đã cố gắng đặt dấu nháy đơn trước và sau khi đóng và mở dấu ngoặc kép xung quanh biến url? Mọi thứ như:

..." = window.open('" + url + "',... 
Các vấn đề liên quan