Tôi có thể lấy window.document nhưng làm thế nào tôi có thể lấy document.window? Tôi cần phải biết làm thế nào để làm điều đó trong tất cả các trình duyệt.Làm cách nào để lấy đối tượng Window từ đối tượng Tài liệu?
Trả lời
The Window object is the top level object in the JavaScript hierarchy, vì vậy chỉ cần đề cập đến nó như là cửa sổ
Edit: Original câu trả lời trước khi Promote JS nỗ lực. JavaScript technologies overview trên Mạng dành cho nhà phát triển Mozilla cho biết:
Trong môi trường trình duyệt, đối tượng toàn cục này là đối tượng cửa sổ.
Chỉnh sửa 2: Sau khi đọc bình luận của tác giả cho câu hỏi của mình (và nhận được downvotes), điều này dường như có liên quan đến cửa sổ tài liệu của iframe. Hãy xem window.parent và window.top và có thể so sánh chúng để suy ra cửa sổ tài liệu của bạn.
if (window.parent != window.top) {
// we're deeper than one down
}
Sau 'mở()' cửa sổ mới của 'cửa sổ' là một' cửa sổ' hơn 'mở'.Nếu bạn nhận được một 'tài liệu' (hoặc bất kỳ' Node') nào từ một số hàm, bạn có thể cần cửa sổ gốc. (Wow cái này rất cũ.) – Rudie
Bạn có thể đi với document.defaultView
nếu bạn chắc chắn nó một cửa sổ và ổn của nó để bỏ qua các trình duyệt của Microsoft trước khi IE 9.
Có. Chỉ cần nhớ rằng theo thông số kỹ thuật, 'document.defaultView' không phải là cùng một đối tượng như' window' (và, thực tế là khác trong một số ứng dụng cũ hơn, ví dụ: Safari 2.x) – kangax
Hoạt động tốt cho các tài liệu XUL trong Firefox nữa! cảm ơn :) – macguru2000
doc.parentWindow || doc.defaultView, và nó hoạt động trong IE cũ và Safari –
Vâng, đây là giải pháp tôi đã đi với. Nó hoạt động, nhưng tôi ghét nó.
getScope : function(element) {
var iframes = top.$$('iframe');
var iframe = iframes.find(function(element, i) {
return top[i.id] ? top[i.id].document == element.ownerDocument : false;
}.bind(this, element));
return iframe ? top[iframe.id] : top;
}
IE chỉ tôi thấy ... –
IE là gì chỉ về nó? Dường như làm việc tốt trong FF \ Saf \ IE \ Chrome. Nó không cần thiết trong bất cứ điều gì nhưng IE tuy nhiên, vì các trình duyệt khác tất cả mở rộng các phần tử tự động trong phạm vi bên phải. – Joren
Một giải pháp trình duyệt chéo rất phức tạp, dưới đây là cách thực hiện võ đường nó (từ window.js :: get()):
// In some IE versions (at least 6.0), document.parentWindow does not return a
// reference to the real window object (maybe a copy), so we must fix it as well
// We use IE specific execScript to attach the real window reference to
// document._parentWindow for later use
if(has("ie") && window !== document.parentWindow){
/*
In IE 6, only the variable "window" can be used to connect events (others
may be only copies).
*/
doc.parentWindow.execScript("document._parentWindow = window;", "Javascript");
//to prevent memory leak, unset it after use
//another possibility is to add an onUnload handler which seems overkill to me (liucougar)
var win = doc._parentWindow;
doc._parentWindow = null;
return win; // Window
}
return doc.parentWindow || doc.defaultView; // Window
có ("ie") trả về true cho IE (và nếu không thì)
trước hết hãy rõ ràng. loại điều này thường cần thiết khi bạn làm việc với khung, iframe và nhiều cửa sổ, và vì vậy "cửa sổ chỉ là đối tượng chung" là câu trả lời không hài lòng nếu tất cả bạn có tay cầm là tài liệu từ một cửa sổ khác so với số bạn đang sử dụng.
giây, không may là không có trực tiếp cách nhận được đối tượng cửa sổ. có những cách gián tiếp.
cơ chế chính để sử dụng là window.name. khi tạo cửa sổ hoặc khung từ cửa sổ cha mẹ, bạn thường có thể cung cấp cho nó một tên duy nhất. bất kỳ tập lệnh nào bên trong cửa sổ đó đều có thể nhận được tại window.name. bất kỳ tập lệnh nào bên ngoài cửa sổ đều có thể nhận được tại cửa sổ.name của tất cả các cửa sổ con của nó.
để cụ thể hơn yêu cầu thêm thông tin về tình huống cụ thể. tuy nhiên trong mọi tình huống mà các kịch bản con có thể giao tiếp với các tập lệnh gốc hoặc ngược lại, chúng luôn có thể xác định lẫn nhau theo tên, và điều này thường là đủ.
- 1. Cách lấy tài nguyên kết nối từ đối tượng PDO?
- 2. WindowProxy và Window đối tượng?
- 3. Cách lấy System.IO.Stream từ đối tượng String
- 4. Cách lấy đối tượng Uri từ Bitmap
- 5. Cách lấy đối tượng tệp từ mkstemp()?
- 6. Cách lấy đối tượng bằng "id" từ bộ sưu tập đối tượng propel?
- 7. Làm cách nào để lấy dữ liệu thô từ đối tượng CVImageBuffer
- 8. Javascript trỏ đến đối tượng Window
- 9. Java GUI: Mẫu đối tượng tài liệu
- 10. Làm cách nào để tạo html từ đối tượng Java?
- 11. Làm cách nào để lấy đối tượng tài nguyên thư trong một servlet?
- 12. lấy đối tượng duy nhất từ NSFetchRequest
- 13. Return đối tượng từ AngularJS $ http lấy
- 14. Lấy nguồn từ tệp đối tượng
- 15. cách lấy đối tượng CSSStyleSheet từ phần tử HTMLStyleElement
- 16. Làm thế nào để tạo một tài liệu XML từ một đối tượng .NET?
- 17. Làm cách nào để làm chủ Mô hình đối tượng tài liệu (DOM)?
- 18. Cách lấy thuộc tính đối tượng từ mỗi đối tượng trong một mảng?
- 19. Không thể lấy tài sản đối tượng trong WMI (C++)
- 20. Lấy tên lớp từ đối tượng Lớp
- 21. Làm cách nào để lấy SQL từ một đối tượng truy vấn trong ColdFusion?
- 22. Làm cách nào để lấy tên lớp từ đối tượng C++?
- 23. Làm cách nào để lấy lại đối tượng python của tôi từ một QVariant trong PyQt4?
- 24. Trung tâm iTextSharp căn chỉnh đối tượng trong đối tượng Tài liệu
- 25. Làm thế nào để lấy đối tượng cho khóa từ NSDictionary?
- 26. Cách lấy đối tượng từ PK bên trong mẫu Django?
- 27. Cách lấy các phần tử html từ thẻ đối tượng?
- 28. Đối tượng PHP dưới dạng tài liệu XML
- 29. Làm thế nào để bạn gọi hàm đối tượng cha từ đối tượng con trong javascript
- 30. WCF: Cách lấy đối tượng Binding từ cấu hình
tôi có dám hỏi tại sao không? cửa sổ là một đối tượng luôn có sẵn và luôn có không quá 1 tài liệu trong cửa sổ, một mối quan hệ 1-1 để nói ... – Colin
Vì tôi đang sử dụng mẫu thử nghiệm trên nhiều iframe và các phương thức Element khác nhau phá vỡ trong IE hoặc Safari nếu phần tử bằng cách nào đó được mở rộng trong phạm vi sai. Tôi đã sửa đổi một số điều để khắc phục sự cố này trong nguyên mẫu, nhưng một phần của bản sửa lỗi yêu cầu tôi phải tìm cửa sổ nào có phần tử. – Joren
@Joren, hãy cân nhắc thay đổi thành câu trả lời được chấp nhận. – kay