2008-11-23 50 views
14

Tôi đang tạo một Tiện ích mở rộng của Firefox ... javascript sẽ là gì để mở một URL trong tab hiện tại từ một menuitem?Mở URL trong tab/cửa sổ hiện tại từ Tiện ích mở rộng của Firefox

ví dụ: trong tệp overlay.xul của tôi, tôi có dòng sau:

<menuitem label="Visit homepage" oncommand="window.location='http://www.somepage.com'"/> 

nhưng trong firefox, khi tôi nhấp vào mục trình đơn, nó sẽ mở URL nhưng nó chiếm toàn bộ bố cục của trình duyệt.

Cách chính xác để thực hiện việc này là gì?

Trả lời

9

Sau khi duyệt xung quanh, tôi thấy rằng tôi đã phải thay thế mã trên với điều này:

<menuitem label="Visit homepage" oncommand="content.wrappedJSObject.location='http://www.somepage.com'"/> 
+0

Một điều tôi muốn lưu ý là bạn có thể muốn tạo một hàm JavaScript để xử lý việc này, chỉ trong trường hợp bạn muốn sử dụng nó cho các sự kiện nhấp chuột khác trong suốt tiện ích mở rộng của mình! – Alex

1

Gọi này JS chức năng trên commmand

//open a url current window: 
function openUrl(url) { 
content.wrappedJSObject.location = url; 
newTabBrowser = gBrowser.selectedBrowser; 
newTabBrowser.addEventListener("load", highlight, true); 
} 

//new tab 
function openUrlNewTab(url) { 
var win = Components.classes['@mozilla.org/appshell/window-mediator;1'] 
      .getService(Components.interfaces.nsIWindowMediator) 
      .getMostRecentWindow('navigator:browser'); 
win.gBrowser.selectedTab = win.gBrowser.addTab(url); 
} 
9

của bạn Từ một menuitem bạn có thể sử dụng openUILinkIn. Nó hoạt động như:

openUILinkIn(url, where); 

nơi có thể là: tab, hiện tại, cửa sổ (và một vài lựa chọn hiếm khi được sử dụng khác)

Nếu bạn muốn hành xử khác nhau dựa trên những gì bàn phím Modifiers một người dùng được nhấn, bạn có thể sử dụng chức năng khác whereToOpenLink, trả về tab/hiện tại/cửa sổ dựa trên tùy chọn người dùng và công cụ sửa đổi.

openUILinkIn(url, whereToOpenLink(event)); 

Vì vậy tôi sử dụng:

<menuitem label="Visit homepage" 
      oncommand="openUILinkIn('http://example.com/', whereToOpenLink(event))"/> 

Nếu bạn đang không ở trong bối cảnh của một menuitem bạn có thể muốn kiểm tra một built-in XBL có thêm liên kết và mở HREF cho một nhãn:

<label value="google" class="text-link" href="http://google.com/" /> 
+0

Bạn lấy thông tin này từ đâu? Tôi đã tìm kiếm vô ích cho một số tài liệu thực tế về những gì bạn có thể làm với Javascript trong một phần mở rộng FF. – Zarkonnen

+0

@Zark https://developer.mozilla.org/ là nơi tốt nhất, mặc dù lúc đầu bạn có thể khó tìm đường. Việc giữ https://developer.mozilla.org/en/Code_snippets được đánh dấu là luôn tốt. – MatrixFrog

2
<menuitem label="Visit Report Site" oncommand="var win = Components.classes['@mozilla.org/appshell/window-mediator;1'] 
.getService(Components.interfaces.nsIWindowMediator) 
.getMostRecentWindow('navigator:browser'); win.openUILinkIn('http://www.google.com', 'tab');"/> 

Open URL trong tab mới.

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