2009-07-09 35 views
12

Tôi nhận được một "Đối tượng không hỗ trợ lỗi thuộc tính hoặc phương pháp này", có ai biết tại sao không?Phương thức Javascript toSource() không hoạt động

tôi có giá trị cắm vào userId, fname, lname, oname, sam, hasAccess

function Employee(id, fname, lname, oname, sam, access) { 
    this.id = id; 
    this.fname = fname; 
    this.lname = lname; 
    this.oname = oname 
    this.sam = sam; 
    this.access = access; 
} 

var emp = new Employee(userId, fname, lname, oname, sam, hasAccess); 

var jsonstuff = emp.toSource(); //Breaking here 

Mặc dù liên kết này cho biết có thể của nó http://www.w3schools.com/jsref/jsref_toSource_date.asp

Trả lời

19

toSource() không hoạt động trong Internet Explorer hoặc Safari. Nó chỉ là Gecko. Xem Implementing Mozilla's toSource() method in Internet Explorer để biết các lựa chọn thay thế.

+8

+1 để đề cập đến Safari! Thế giới trình duyệt không chỉ là Firefox và IE. –

+0

@Vince: Nếu sếp của bạn không đủ năng lực, hãy cố gắng giải thích cho anh ta rằng đảm bảo rằng nó hoạt động bên ngoài IE và FF sẽ dẫn đến công việc bảo trì ít hơn trong thời gian tới IE được nâng cấp. Nó cũng sẽ làm cho người dùng IE và FF khó chịu hơn nhiều với công ty của bạn khi họ duyệt trang web từ điện thoại di động của họ (cho dù đó là iPhone, Nokia hay cái gì khác mà không có IE). – Fredrik

+0

Đừng quên Chrome thực sự tham gia vào cuộc chiến. Rời khỏi Safari + Chrome + Opera sang một bên, bạn có thể để lại 15% thị phần (tùy thuộc vào thị trường trang web của bạn). Giống như một ví dụ, xem: http://www.w3schools.com/browsers/browsers_stats.asp – lepe

8

Hãy thử sử dụng một JSON serializer để thay thế. toSource là Mozilla cụ thể và không được hỗ trợ bởi IE.

Nếu bạn chỉ đang gỡ lỗi thì đặt cược tốt nhất của bạn sẽ là install Firebug và sử dụng console.dir (emp); để in nội dung của một đối tượng vào cửa sổ giao diện điều khiển.

Cập nhật: Chỉ cần thông báo rằng trên link you posted nó nói, "Lưu ý: Phương pháp này không hoạt động trong Internet Explorer!" Và trên MDC page nó nói "Không chuẩn".

+0

Rất tiếc! xin lỗi các bạn đã không thấy rằng –

+0

Có 5 triển khai khác nhau của JSON Serializer từ liên kết GitHub đó. Bạn có thể đưa ra một ví dụ thay thế cho mã này: alert (obj.toSource()) – MacGyver

+3

Hãy thử 'alert (JSON.stringify (obj))' – Prestaul

4

Bạn có thể gọi toString thay vào đó, hoặc đặt trong tình trạng như thế này ...

var jsonstuff = (emp.toSource) ? emp.toSource() : emp.toString(); 

EDIT:

Vì đây là không làm việc cho bạn, bạn có thể muốn sử dụng JSON.stringify()

2

Trong khi không được khuyến khích (để mở rộng đối tượng JS mẹ đẻ) , trong quá trình phát triển, bạn có thể sử dụng:

Object.prototype.toSource 
    || (Object.prototype.toSource = function(){return JSON.stringify(this);}) 

c = {a:100} 
//>Object 
c.toSource() 
//>"{"a":100}" 

cổ vũ!

+0

Điều gì về chức năng và như vậy? –

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