2009-12-15 31 views
5

Tôi muốn phát triển một Tiện ích mở rộng Firefox thực hiện mọi việc khi nhấp vào liên kết mở một tab mới do kết quả của thuộc tính của liên kết và cũng có thể khi nút "Quay lại" (hoặc tương đương) được nhấn.Hooking "Mở trong tab mới" và "Quay lại"

Làm cách nào để móc hai thứ này vào tiện ích?

Cập nhật: Tôi đã bắt đầu một tiền thưởng - Tôi hy vọng câu trả lời có thể dẫn đến một số trang web tài liệu ẩn cho Tiện ích bổ sung của Firefox. Một trang web không phải là codebase của Firefox. Và không phải là một bộ sưu tập của tất cả các tiện ích mở rộng từng được viết.

+0

https: // nhà phát triển.mozilla.org/en/XUL – moonshadow

+0

https://developer.mozilla.org/En/XUL_Tutorial/Introduction_to_XBL – moonshadow

+0

Chrome chỉ thực sự là XHTML. Dù sao may mắn về việc tìm kiếm một câu trả lời, tôi không có đủ kinh nghiệm với các phần mở rộng để thực sự cho bạn biết. – MindStalker

Trả lời

2

Tôi sẽ cố gắng trả lời và cung cấp cho bạn một số bản nhạc, nhưng lưu ý rằng nó có thể phụ thuộc vào số phiên bản firefox của bạn (tôi biết bạn không tìm trang MDC, và tôi biết nó không phải lúc nào cũng được tài liệu hóa, nhưng đây là những gì tôi tìm thấy).

  • Tab mới: bạn phải add an eventListener trong một số hàm khởi tạo và tham chiếu hành động bạn muốn gọi. Bằng cách này, bạn không phải lo lắng về cách tab mới được gọi là
  • Đã phát hiện nút Quay lại: (tính năng mới từ Firefox 3.5) add a progress listener on all tabs để phát hiện vị tríChange, sau đó chơi với "Địa điểm" hệ thống lịch sử mới (kể từ Firefox 3) để so sánh và xem liệu URI mới có giống với URI trước đó hay không. Đừng quên bạn có thể quay lại với "Del" hoặc "Alt" + "LeftArrow" để bạn không thể thực hiện lại thao tác Back Button (nếu không bạn có thể thêm lớp phủ XUL và xác định lại những gì bạn cần, nhưng tôi ' chưa bao giờ làm điều đó trước đây)
+0

Điều tôi cần làm là bắt trình duyệt sau khi nó nhận ra nó cần quay trở lại (cho dù từ nút quay lại, alt-trái hoặc Del) nhưng trước khi nó thực sự cố gắng quay trở lại. – Arkadiy

+0

Hmm không chắc chắn nó sẽ có thể mà không có một số giải pháp khó khăn. Tôi không thể giúp bạn nhiều hơn tôi nghĩ, nhưng bạn có thể tìm sự giúp đỡ trên irc.mozilla.org, nơi các nhà phát triển mozilla nói về những khó khăn và khác (có thể nó không phải là khoảng thời gian tốt nhất). – Baztoune

2

Dường như với tôi như bạn muốn tránh sử dụng trình xử lý tiến trình vì bạn muốn phản hồi lại ngay cả khi không có trang nào để quay lại.

Nếu đúng như vậy, bạn đã thử thay thế tab mới bằng URL tạm thời thuộc loại nào chưa?

Để giải thích những gì tôi có nghĩa là:

  1. Người dùng nhấp chuột mở tab mới để http://www.google.com
  2. Redirect để http://cannotwork/?http://www.google.com
  3. Save as một vị trí
  4. Trên bất kỳ yêu cầu http://cannotwork/ gửi đến vị trí bổ sung

Chỉ cần loại bỏ các ý tưởng ở đây. Chúc may mắn.

Ngoài ra còn có một bổ trợ Back to Close cho các phiên bản trước của FF, thay thế nút quay lại gần khi bạn đang ở "bắt đầu". Nó có thể là ý tưởng anoter phong nha. Vấn đề duy nhất là anh ta không thể bắt del/back trên chuột. Vì vậy, ông đề nghị rebinding nút chuột để Alt + trái (nào đã bị bắt).

+0

Tôi nghĩ https://addons.mozilla.org/en-US/firefox/addon/939/ là những gì bạn đang đề cập đến? – MatrixFrog

1

Có vẻ như bạn có thể triển khai giao diện nsISHistoryListener để được thông báo khi người dùng cố gắng quay lại.

OnHistoryGoBack

Thông báo cho một người biết lắng nghe khi người dùng nhấn vào nút 'trở lại' của trình duyệt hoặc khi người dùng cố gắng quay trở lại một trang trong lịch sử thông qua các phương tiện khác, hoặc thông qua kịch bản hoặc bằng cách sử dụng nsIWebNavigation.

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