我使用Chrome的JavaScript控制檯(如果您使用Chrome或鉻,則只需按Ctrl鍵+移+Ĵ現在打開它)當前打開的選項卡下面。如何從下面的Javascript控制檯激活選項卡?
有什麼我可以輸入到控制檯,以便上面的選項卡中的文檔獲得焦點和控制檯失去焦點?
我試着用
chrome.tabs
,但只給出了
undefined
我使用Chrome的JavaScript控制檯(如果您使用Chrome或鉻,則只需按Ctrl鍵+移+Ĵ現在打開它)當前打開的選項卡下面。如何從下面的Javascript控制檯激活選項卡?
有什麼我可以輸入到控制檯,以便上面的選項卡中的文檔獲得焦點和控制檯失去焦點?
我試着用
chrome.tabs
,但只給出了
undefined
https://support.google.com/chrome/bin/answer.py?hl=en&answer=157179
說
(F6)或(移 + F6)
但是在到達主要webcontent之前,您必須切換一大堆東西。
*「進入控制檯」*我的意思是在那裏鍵入javascript代碼,然後按回車;) - 但無論如何,歡迎熱鍵,感謝提示。 – hakre
FWIW,我找到了一半的答案。 https://developer.chrome.com/extensions/messaging.html – ShaggyInjun
這是擴展,如果用戶允許的話,它們可以訪問'chrome.tabs'(擴展請求獲得安裝時的權限)。 – hakre
根據Firebug's Command Line API* wikipage,沒有辦法;它只會輸出關於輸入的數據。
*這是什麼JavaScript控制檯使用
即使這是關於Firebug(也可能是Chrome)的一個很好的暗示,但這並不意味着Google Chrome中沒有任何功能可以這樣做。請注意。無論如何感謝鏈接,我不知道這個API。 – hakre
只有這樣,才能獲得焦點,但不關閉控制檯將調用其中alert();
,confirm();
或prompt();
。
或者通過關閉控制檯(window.open("javascript:close()","_self");
),主選項卡可以獲得焦點。
我不會以任何方式稱這是一個優雅的解決方案,但作爲一種破解,它會完成這項工作。
您的問題是「如何將焦點從主要文檔從的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);
,而不是在控制檯粘貼代碼:
var a = function() {my code...}; a()
你可以粘貼,並從地址欄運行它:
javascript:var a = function() {alert('hi');}; a()
你甚至可以添加這個javascript:url作爲書籤,這是多少代碼片段('bookmarklets')運行。
不想在這裏停止你的動機,但是提示'alert()'確實存在。從技術上講,這不是一個答案(正如已經評論的那樣),因爲它將焦點集中在警報框中,而不是選項卡上。我需要標籤中的重點。 – hakre
我聽說你想炸這個問題,所以這裏是一個小推動:) –
謝謝,在一個小時內我可以把這個獎金,所以不是其他用戶認爲這只是一個懶惰的問題。我可以想象,這不容易回答,因爲人們可能會直接認爲這是不可能的,並且需要回答它,需要了解Google Chrome/Chromium相當不錯,以便知道*如果可能或不可以。 – hakre
您可能已經在Chrome擴展庫中找到了[chrome.tabs文檔](http://developer.chrome.com/extensions/tabs.html),似乎'chrome.tabs'僅限於擴展代碼使用。如果您在控制檯中輸入「chrome」,您將從控制檯獲得所有可用的屬性。將看看我能否找到解決方法。 – SaschaM78