2012-12-20 36 views
12

我使用Chrome的JavaScript控制檯(如果您使用Chrome或鉻,則只需按Ctrl鍵++Ĵ現在打開它)當前打開的選項卡下面。如何從下面的Javascript控制檯激活選項卡?

有什麼我可以輸入控制檯,以便上面的選項卡中的文檔獲得焦點和控制檯失去焦點?

我試着用

chrome.tabs 

,但只給出了

undefined 
+5

我聽說你想炸這個問題,所以這裏是一個小推動:) –

+0

謝謝,在一個小時內我可以把這個獎金,所以不是其他用戶認爲這只是一個懶惰的問題。我可以想象,這不容易回答,因爲人們可能會直接認爲這是不可能的,並且需要回答它,需要了解Google Chrome/Chromium相當不錯,以便知道*如果可能或不可以。 – hakre

+0

您可能已經在Chrome擴展庫中找到了[chrome.tabs文檔](http://developer.chrome.com/extensions/tabs.html),似乎'chrome.tabs'僅限於擴展代碼使用。如果您在控制檯中輸入「chrome」,您將從控制檯獲得所有可用的屬性。將看看我能否找到解決方法。 – SaschaM78

回答

8

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

F6)或( + F6

但是在到達主要webcontent之前,您必須切換一大堆東西。

+0

*「進入控制檯」*我的意思是在那裏鍵入javascript代碼,然後按回車;) - 但無論如何,歡迎熱鍵,感謝提示。 – hakre

+0

FWIW,我找到了一半的答案。 https://developer.chrome.com/extensions/messaging.html – ShaggyInjun

+0

這是擴展,如果用戶允許的話,它們可以訪問'chrome.tabs'(擴展請求獲得安裝時的權限)。 – hakre

2

根據Firebug's Command Line API* wikipage,沒有辦法;它只會輸出關於輸入的數據。

*這是什麼JavaScript控制檯使用

+0

即使這是關於Firebug(也可能是Chrome)的一個很好的暗示,但這並不意味着Google Chrome中沒有任何功能可以這樣做。請注意。無論如何感謝鏈接,我不知道這個API。 – hakre

6

只有這樣,才能獲得焦點,但不關閉控制檯將調用其中alert();confirm();prompt();
或者通過關閉控制檯(window.open("javascript:close()","_self");),主選項卡可以獲得焦點。

+0

這實際上可以與'alert()','confirm()'或'prompot()'一起使用,但是在那裏有消息框的副作用。所以它不會關注標籤*,而是*這些消息框。無論如何,謝謝你的建議。調用'window.open(「javascript:close()」,「_ self」)'不會給我太多的效果。 – hakre

+0

迄今爲止最有創意的答案。 – hakre

1

我不會以任何方式稱這是一個優雅的解決方案,但作爲一種破解,它會完成這項工作。

您的問題是「如何將焦點從主要文檔的Chrome控制檯」;與此同時,我投擲了一箇中間元素 - 一個彈出窗口。這個想法是,如果你可以創建一個自動關閉的彈出窗口(從控制檯),當它關閉時,焦點返回到父窗口。在這種情況下,這是您所在的實際文檔,而不是Chrome中的控制檯。

下面是完整的代碼佈局的:

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

該代碼可以摺疊成一個班輪,可以是複製+粘貼到控制檯,就可以到達輸入會彈出,關閉並將焦點放回原始文檔。無論您將焦點放在控制檯上或頁面上的任何元素聚焦於,控制檯(通過document.getElementById('something').focus()或類似的項目)都會將焦點放在頁面上。

對此方法的警告是,您使用此網站的網站需要啓用彈出窗口。或者,並非真正推薦,您可以在Chrome中「啓用所有彈出窗口」。

作爲一個額外的補充,如果您打算在同一頁面上多次使用(不刷新),您可以將添加到頁面的JavaScript包裝在函數調用中,並且每次調用該函數。例如:當你想給焦點回到父

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

然後,只需調用refocus();。當然,如果您因任何原因離開當前頁面,則需要重新運行整個代碼塊。

值得一提的是,如果你看到自己使用了這麼多,你還可以添加擴展Tampermonkey並將這段代碼保存到那裏的一個函數中;那麼,你永遠不用擔心每次運行整個事情 - 你只需要調用你保存的函數名。

的一行從上面(爲便於複製+粘貼):

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

,而不是在控制檯粘貼代碼:

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

你可以粘貼,並從地址欄運行它:

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

你甚至可以添加這個javascript:url作爲書籤,這是多少代碼片段('bookmarklets')運行。

+0

不想在這裏停止你的動機,但是提示'alert()'確實存在。從技術上講,這不是一個答案(正如已經評論的那樣),因爲它將焦點集中在警報框中,而不是選項卡上。我需要標籤中的重點。 – hakre