2012-12-20 9 views
12

Tôi đang sử dụng giao diện điều khiển javascript của Chrome (Nếu bạn đang sử dụng Chrome hoặc Chromium, bạn chỉ có thể nhấn tổ hợp phím Ctrl + phím Shift +J nay để mở nó) bên dưới tab mở hiện hành.Cách kích hoạt Tab từ Bảng điều khiển Javascript bên dưới?

Có điều gì tôi có thể nhập vào bảng điều khiển để tài liệu trong tab ở trên có tiêu điểm và bảng điều khiển không tập trung vào không?

Tôi đã thử với

chrome.tabs 

nhưng nó chỉ mang đến cho

undefined 
+5

Tôi nghe nói rằng bạn muốn tăng vọt câu hỏi này, vì vậy đây là một cú hích nhỏ :) –

+0

Cảm ơn, trong một giờ tôi có thể đặt tiền thưởng cho điều này, vì vậy không phải người dùng khác nghĩ đó chỉ là câu hỏi chưa xong. Tôi có thể hình dung rằng điều này không dễ để trả lời vì người ta có thể nghĩ trực tiếp rằng điều đó là không thể và để trả lời nó, người ta cần biết Google Chrome/Chromium khá tốt để thực sự * biết * nếu có thể hay không. – hakre

+0

Có thể bạn đã tìm thấy [chrome.tabs docs] (http://developer.chrome.com/extensions/tabs.html) trong thư viện tiện ích của Chrome, có vẻ như 'chrome.tabs' bị hạn chế sử dụng bởi mã mở rộng. Nếu bạn nhập "chrome" trong bảng điều khiển, bạn sẽ nhận được tất cả các thuộc tính có sẵn từ bảng điều khiển. Sẽ xem tôi có thể tìm được cách giải quyết hay không. – SaschaM78

Trả lời

8

https://support.google.com/chrome/bin/answer.py?hl=en&answer=157179

nói

(F6) Hoặc (phím Shift + 0 F6)

nhưng bạn sẽ phải chuyển qua nhiều thứ trước khi bạn truy cập nội dung web chính.

+0

Với * "nhập vào giao diện điều khiển" * Tôi thực sự có nghĩa là gõ mã javascript trong đó và nhấn enter;) - Nhưng phím nóng được hoan nghênh anyway, nhờ gợi ý. – hakre

+0

FWIW, tôi đã tìm thấy một nửa câu trả lời. https://developer.chrome.com/extensions/messaging.html – ShaggyInjun

+0

Đó là dành cho extenstions, họ có thể truy cập 'chrome.tabs' nếu người dùng cho phép (tiện ích mở rộng yêu cầu nhận quyền khi được cài đặt). – hakre

2

Theo Firebug's Command Line API* wikipage, không có cách nào; nó sẽ chỉ xuất dữ liệu về, ahem, đầu vào.

* đó là những gì các Bảng điều khiển Javascript sử dụng

+0

Thậm chí đây là một gợi ý hay về Firebug (và có khả năng Chrome), điều này không có nghĩa là không có gì ngoài việc có thể làm như vậy trong Google Chrome. Chỉ cần lưu ý. Cảm ơn bạn đã liên kết, tôi không biết API đó. – hakre

6

Cách duy nhất để đạt được trọng tâm mà không đóng giao diện điều khiển sẽ được gọi một trong hai alert();, confirm(); hoặc prompt();.
Cách khác bằng cách đóng bảng điều khiển (window.open("javascript:close()","_self");), tab chính có thể lấy nét.

+0

Điều này thực sự làm việc với 'alert()', 'confirm()' hoặc 'prompot()' nhưng có tác dụng phụ của việc có hộp thông báo đó. Vì vậy, nó không tập trung vào tab * nhưng * những hộp tin nhắn đó. Dù sao, cảm ơn vì đã gợi ý điều đó. Gọi 'window.open (" javascript: close() "," _ self ")' không cho tôi nhiều hiệu ứng. – hakre

+0

Đã có câu trả lời sáng tạo nhất cho đến nay. – hakre

1

Tôi sẽ không gọi đây là một giải pháp thanh lịch theo bất kỳ cách nào, nhưng là một hack, nó sẽ thực hiện công việc.

Câu hỏi của bạn là "cách tập trung vào tài liệu chính từ Bảng điều khiển Chrome"; với điều đó, tôi đang ném vào phần tử ở giữa - một cửa sổ bật lên. Ý tưởng là, nếu bạn có thể tạo cửa sổ bật lên tự đóng (từ Bảng điều khiển), khi nó đóng tiêu điểm quay lại cửa sổ chính. Trong trường hợp này, đó là tài liệu thực tế bạn đang sử dụng, không phải là Bảng điều khiển trong Chrome.

Dưới đây là đầy đủ các mã đặt ra:

var openScript = document.createElement('script'); 
openScript.innerHTML = 'openWindow = window.open(""); openWindow.document.write(\'<script>window.close();</script>\');'; 
document.body.appendChild(openScript); 

Mã này có thể được sụp đổ vào một lớp lót có thể được sao chép + dán vào giao diện điều khiển, và sau khi bạn nhấn Nhập nó sẽ bật lên, đóng và đưa tiêu điểm trở lại tài liệu gốc. Bất kỳ yếu tố nào trên trang đã tập trung trước khi bạn tập trung vào bảng điều khiển hoặc bất kỳ yếu tố nào bạn đã thay đổi tập trung thành trong bảng điều khiển (qua document.getElementById('something').focus() hoặc tương tự) sẽ được tập trung vào trang.

Thông báo trước cho phương pháp này là trang web bạn sử dụng này cần phải bật cửa sổ bật lên. Ngoài ra, và không thực sự được đề xuất, bạn chỉ có thể "bật tất cả cửa sổ bật lên" trong Chrome.

Như một phần bổ sung, nếu bạn sử dụng nhiều lần trên cùng một trang (không làm mới), bạn có thể bọc javascript được thêm vào trang trong một cuộc gọi hàm và chỉ gọi hàm đó mỗi lần. Ví dụ:

... 
openScript.innerHTML = 'function refocus() { openWindow = window.open(""); openWindow.document.write(\'<script>window.close();</script>\'); }'; 
... 

Sau đó, chỉ cần gọi refocus(); bất cứ khi nào bạn muốn tập trung lại cho phụ huynh. Tất nhiên, nếu bạn rời khỏi trang hiện tại vì bất kỳ lý do nào bạn cần phải chạy lại toàn bộ khối mã.

Đối với những gì đáng giá, nếu bạn thấy bản thân mình sử dụng rất nhiều, bạn cũng có thể thêm phần mở rộng Tampermonkey và lưu khối mã này vào một hàm ở đó; sau đó, bạn sẽ không bao giờ cần phải lo lắng về việc chạy toàn bộ điều mỗi lần - bạn sẽ chỉ gọi tên hàm bạn đã lưu.

One-lót từ trên cao (để dễ dàng copy + paste):

var openScript = document.createElement('script'); openScript.innerHTML = 'openWindow = window.open(""); openWindow.document.write(\'<script>window.close();</script>\');'; document.body.appendChild(openScript); 
-1

Thay vì dán mã trong giao diện điều khiển:

var a = function() {my code...}; a() 

Bạn có thể dán và chạy nó từ thanh url:

javascript:var a = function() {alert('hi');}; a() 

Bạn thậm chí có thể thêm javascript: url làm dấu trang, đây là số lượng đoạn mã ('dấu trang') được chạy.

+0

Không muốn dừng động lực của bạn ở đây, nhưng câu trả lời cho thấy 'alert()' có tồn tại không. Và về mặt kỹ thuật, nó không phải là một câu trả lời (như đã được nhận xét), bởi vì nó đưa tập trung vào hộp cảnh báo, chứ không phải là tab. Tôi cần trọng tâm trong tab. – hakre