2010-03-09 8 views
17

Tôi đã tạo tiện ích mở rộng chrome và đã quản lý để mở tệp popup.html bằng cách sử dụng window.open. tuy nhiên, tôi muốn mở nó trong một tab mới, tôi đã thử nhiều cách khác nhau bao gồm:Tiện ích mở rộng của Chrome: biểu tượng tiện ích mở rộng onclick, mở popup.html trong tab mới

<script type="text/javascript" language="JavaScript"> 
    chrome.tabs.create('url': 'popup.html'); 

Tôi chỉ đặt mã sai chỗ hoặc mã sai hoàn toàn?

+0

thử câu trả lời này: http://stackoverflow.com/a/36996729/5309803 ... nó làm việc cho tôi –

Trả lời

20

tại sao bạn muốn mở popup.html trong tab mới? Bạn nên tạo một trang khác cho điều đó. Dù sao, nếu bạn muốn mở popup.html, trong một tab mới, bạn sẽ cần phải chuyển vào url mở rộng.

http://code.google.com/chrome/extensions/extension.html#method-getURL

chrome.tabs.create({'url': chrome.extension.getURL('popup.html')}, function(tab) { 
    // Tab opened. 
}); 
+4

đoạn này cần phải được gọi từ trang nền, vì vậy nếu bạn đang cố gắng mở tab từ tập lệnh nội dung, hãy gửi thư đến trang nền sẽ kích hoạt mã này. Đây là trang thích hợp để gửi tin nhắn theo cách này: http://code.google.com/chrome/extensions/messaging.html –

+2

Tôi đã phải đóng 'url': chrome.extension.getURL ('popup.html') trong ngoặc. {'url': chrome.extension.getURL ('popup.html')} – AdamB

2

Sử dụng chrome.tabs.create (các thuộc tính đối tượng, chức năng gọi lại) như mô tả trên http://code.google.com/chrome/extensions/tabs.html

Các thuộc tính đối tượng có thể chứa các lĩnh vực cho windowId, chỉ số, url và lựa chọn. Hàm gọi lại tùy chọn nhận đối tượng Tab của tab mới được tạo.

Vì vậy, ví dụ đơn giản nhất để tạo ra một tab mới trong cửa sổ hiện tại và làm cho nó được lựa chọn sẽ trông như thế này:

chrome.tabs.create({'url': chrome.extension.getURL('popup.html'), 'highlighted': 'true'}); 

Không chắc lý do tại sao bạn muốn hiển thị popup.html trong một tab mới, nhưng tôi thấy nó rất hữu ích trong khi phát triển/gỡ lỗi phần mở rộng của tôi ... nó là khá đau mà trên trang mở rộng có "thường" chỉ có một liên kết đến trang nền.

Rất thích biết làm thế nào để mở nó trong một cửa sổ mới và có lẽ trong một chế độ kiosk ;-)

+2

Lưu ý rằng 'đã chọn' hiện không còn được dùng nữa. Sử dụng 'tô sáng' thay thế. – Brad

6

Bây giờ bạn có thể sử dụng để mở Event Pages popup.html trong tab mới khi biểu tượng mở rộng được nhấp mà không cần tạo một trang default_popup.

manifest:

"background": { 
    "scripts": ["background.js"], 
    "persistent": false 
} 

js:

chrome.browserAction.onClicked.addListener(function(tab) { 
    chrome.tabs.create({'url': chrome.extension.getURL('popup.html'), 'selected': true}); 
}); 
+3

Thao tác này sẽ mở tab mới trên mỗi lần nhấp. Nó có lẽ là khôn ngoan để kiểm tra nếu popup mở rộng đã được mở và nếu có, chỉ cần chọn nó –