2013-08-26 37 views
17

Tôi chỉ mới bắt đầu với phát triển Tiện ích mở rộng của Google Chrome và dự án của tôi liên quan đến việc tạo tiện ích mở rộng khi nhấp vào URL của trang/tab hiện đang mở.Cách lấy URL của tab hiện tại trong tiện ích mở rộng chrome của tôi bằng cách sử dụng javascript

Vì vậy, nếu tôi đang ở trên trang chủ của google và tôi nhấp vào tiện ích mở rộng của mình, tôi cần nhận được "https://www.google.com/" làm đầu ra của mình trong tiện ích.

Tôi cần thực hiện việc này bằng javascript và không thể tìm mã mà tôi hiểu và thực hiện công việc nào. Tôi đọc về cách sử dụng "window.location" và "document.href" và các công cụ nhưng nó sẽ không cho tôi url của phần mở rộng của tôi và không phải là tab hiện tại?

Hãy giúp tôi bắt đầu. Cảm ơn trước.

+0

bản sao có thể có của [Cách lấy URL hiện tại trong Chrome bằng cách nhấp vào nút] (http://stackoverflow.com/questions/17379190/how-to-get-current-url-in-chrome-on-click -of-the-button) –

Trả lời

43

Hãy thử

chrome.tabs.getCurrent(function(tab){ 
     console.log(tab.url); 
    } 
); 

Lưu ý bạn phải có sự cho phép tabs đặt trong file manifest của bạn

"permissions": [ 
    "tabs" 
], 

http://developer.chrome.com/extensions/tabs.html

hoặc activeTab phép nếu khởi xướng bởi một nhấp chuột vào nút mở rộng [ Xan]

https://developer.chrome.com/extensions/activeTab


Nếu ở trên không hoạt động thử

chrome.tabs.query({currentWindow: true, active: true}, function(tabs){ 
    console.log(tabs[0].url); 
}); 
+0

Umm Tôi đã thử mã nhưng nó không hoạt động. Đây là lỗi tôi nhận được trên bàn điều khiển: Uncaught TypeError: Không thể đọc thuộc tính 'url' của undefined –

+0

Tuyệt vời: D Giải pháp thứ hai hoạt động tốt Cảm ơn. Bạn có thể vui lòng giải thích câu trả lời không? Tôi có nghĩa là những gì hoạt động: đúng chỉ ra khi chúng tôi đã sử dụng currentWindow: đúng? Ngoài ra, những gì chính xác sẽ là nội dung của các tab []? –

+1

Bạn có thể kiểm tra http://developer.chrome.com/extensions/tabs.html#method-query để biết thêm chi tiết về các tham số của hàm. –

23

Sử dụng javascript, nó sẽ có tác dụng nếu bạn không sử dụng nó trong cửa sổ bật lên vì javascript trong cửa sổ bật lên sẽ trở lại url của cửa sổ bật lên do đó, trong cửa sổ bật lên, bạn phải sử dụng API tab Chrome và đặt quyền trong tệp kê khai của Chrome.

chrome.tabs.query({currentWindow: true, active: true}, function(tabs){ 
    console.log(tabs[0].url); 
}); 

Vì vậy, cách tốt nhất là sử dụng Chrome tab API

+4

Đây là câu trả lời phù hợp nhất và cần được cập nhật là câu trả lời hay nhất. – Ben

+0

@saadsaf Tôi đang có một thời gian thực sự khó khăn để tìm ra cách ngã ba tab [0] .url ra khỏi cuộc gọi lại này. Nên nó/nó có thể chỉ được sử dụng trong chức năng gọi lại của truy vấn? – A13X

+0

@ A13X Vui lòng xây dựng những gì u r cố gắng để đạt được và dán một số mã ở đây để chúng tôi có thể giải quyết nó hiệu quả với nhau. – saadsaf

0

UPDATE:phương pháp này hiện đang bị phản đối, vì vậy xin vui lòng không sử dụng nó

Trong trường hợp của tôi bất kỳ ở trên chưa đã làm việc. Vì vậy, tôi đã sử dụng điều này:

chrome.tabs.getSelected(null, function(tab) { 
    console.log(tab.url) 
}) 

và nó hoạt động rất tốt! Hy vọng nó giúp.

+0

getSelected() đã không được chấp nhận và không được sử dụng. chrome.tabs.query ({active: true, currentWindow: true}, function (arrayOfTabs) {console.log (các tab [0] .url);}); là cách hiện tại để nhận tab hiện tại (và URL). –

4

Bạn cần phải cẩn thận với ý nghĩa của "tab hiện tại". Nếu người dùng có nhiều cửa sổ mở, mỗi cửa sổ có nhiều tab, Chrome sẽ xác định "cửa sổ hiện tại" làm cửa sổ đang chạy tập lệnh nội dung sử dụng chrome.tabs API.Đã xảy ra với tôi và tôi giải quyết nó bằng cách tham khảo không phải là cửa sổ "hiện tại" nhưng cuối cùng tập trung một:

chrome.tabs.query({ active: true, lastFocusedWindow: true }, function (tabs) { 
    // Do something 
}); 

Tài liệu tham khảo:

https://developer.chrome.com/extensions/windows#current-window https://developer.chrome.com/extensions/tabs#method-query

Hy vọng nó sẽ giúp!

+0

Đây phải là câu trả lời được chấp nhận – kaushik94

0

này làm việc cho tôi cho nó một thử

chrome.tabs.query({ 
active: true, 
lastFocusedWindow: true 
}, function(tabs) { 
// and use that tab to fill in out title and url 
var tab = tabs[0]; 
console.log(tab.url); 
alert(tab.url); 
}); 
2

Phương pháp đơn giản nhất:

console.log ('url hiện tại' + window.location)

0

KHÔNG sử dụng getSelected

Theo Chrome Developer Docs: chrome.tabs.getSelectedđã phản kể từ khi Chrome ver.33

Thay vào đó sử dụng:

chrome.tabs.query({active:true}, __someCallbackFunction__) như đề nghị thứ hai Musa.

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