2010-07-08 9 views
12

Tôi đang sử dụng Mozilla Firefox và tôi đang cố gắng tìm cách truy cập nội dung của các tab khác trong cùng một cửa sổ bằng JavaScript và DOM (Tôi đang mở các kỹ thuật khác nếu tồn tại) .Truy cập nội dung của các tab khác trong trình duyệt

Ví dụ: Tôi muốn chạy JavaScript trong tab1 có thể tìm tiêu đề của một số tab khác. Về cơ bản tôi cần điều này để tôi có thể xác định một tab đã mở do href trong trang hiện tại của tôi mà không sử dụng phương thức window.open. Tất cả những gì tôi muốn là một liên kết siêu đơn giản mở ra một trang thuộc cùng một tên miền với trang hiện tại (trang này sẽ được mở trong một tab mới). Bây giờ tôi muốn có thể truy cập tab mới này từ tab hiện tại.

Trả lời

10

Bạn có thể sử dụng HTML5 cross-window messaging ... nhưng đó là một bước đột phá.

Ngay cả trong trường hợp đó, bạn có thể cần phải chiếm quyền điều khiển thẻ 'nhấp' bằng javascript và tự mở cửa sổ để bạn có quyền truy cập vào đối tượng cửa sổ mới để đăng thông báo.

+2

Có vẻ như chúng tôi đã thực hiện rất nhiều bước trong sáu năm qua :) http://caniuse.com/#feat=x-doc-messaging – Loupax

13

Trong khi bạn có thể dễ dàng mở một cửa sổ mới bằng javascript, tôi chắc chắn rằng nó sẽ ở xa. Từ quan điểm bảo mật, bạn sẽ không muốn Javascript trong một tab có thể truy vấn/truy cập DOM trong một tab khác. Bất kỳ trang web nào sau đó sẽ có thể truy cập vào chi tiết tài khoản ngân hàng của bạn, v.v ... nếu cả hai trang web được mở trong các tab riêng biệt.

+6

vâng .. Tôi biết điều đó. Nhưng, như tôi đã đề cập trước đó, tab/cửa sổ mới sẽ thuộc về cùng một tên miền, vì vậy tôi sẽ không thể "lấy cắp" chi tiết tài khoản ngân hàng từ trang web của riêng tôi. Anyways cảm ơn cho những người trả lời nhanh chóng của bạn ... nhưng cần phải tìm một cách giải quyết cho việc này. - Cảm ơn bạn lần nữa – vamyip

+0

Bạn có thể tạo hiệu ứng tương tự bằng cách theo dõi các tab đang mở phía máy chủ không? Ví dụ. giả sử bạn đã cố ý mã hóa các liên kết nhất định để mở trong tab mới, khi đó bạn biết người dùng có hai tab đang mở. Hơn nữa, nếu bạn có js phía máy khách (ajax) "kiểm tra" cứ sau vài giây từ cả hai tab, giao tiếp liên tab có thể được chuyển tiếp qua máy chủ. Ví dụ. có lẽ tab 1 đang chỉnh sửa đối tượng "Zoo" và thay đổi tên của nó từ "Boston" thành "Denver". Tab 2 là "Boston Zoo Animals", nơi bạn có thể thay đổi động vật trong sở thú. Tab 2 được cập nhật thành "Denver Zoo Animals" với bản cập nhật ajax. –

7

Bạn có thể truy cập cửa sổ/tab mới nếu cửa sổ được mở bằng JavaScript và trang thực sự nằm trong cùng một miền.

Bạn có thể mở cửa sổ/tab như vậy

var win = window.open("/path_to_page"); 

Sau đó, bạn sẽ phải đợi cho trang để tải trước khi bạn có thể truy cập ví dụ tiêu đề.

win.onload = function(){ alert(win.document.title); }; 
+1

Chỉ cần đảm bảo cả hai trang đều có cùng nguồn gốc hoặc bạn sẽ gặp phải lỗi sau: 'Chặn khung có nguồn gốc" http: // x "truy cập khung có nguồn gốc" http: // y ". Giao thức, tên miền và cổng phải khớp nhau.' – supercoco

8

Vamyip,

Hãy thử thiết lập một cookie có thể truy cập vào bất kỳ trang nào trong lĩnh vực tương tự. Trên các trang khác, sử dụng bộ hẹn giờ javascript để kiểm tra xem giá trị cookie đã thay đổi chưa và khi nào bạn có thể sử dụng giá trị của nó và thực hiện hành động.

Nó làm việc cho tôi.