2012-03-29 78 views
0

如果在控制檯本身運行下面的代碼字:Chrome擴展內容腳本可以觸發原始網站接收的鍵盤事件嗎?

var $inputbox = $('input#inputfield'); 
    var SPACE_KEYCODE = 32; 
    var space_down = $.Event('keyup', { which: SPACE_KEYCODE }); 
    $inputbox.trigger(space_down) 

我可以看到被觸發事件和頁面響應。

但是,當通過Chrome擴展程序在內容腳本中運行相同的代碼時,它會以靜默方式失敗。記錄'$ inputbox.trigger(space_down)'的結果顯示它正確地返回元素。

這裏的意圖是讓現有的頁面JS響應擴展中的鍵盤事件。這可能嗎?

回答

1

雖然我一直沒能找到有關內容腳本JS'世界'與原始網站世界之間的事件是否不同的文檔,但是我在內容腳本中做了以下內容以將一些JS加載到window.location中,使其在原始網站的內容中運行。

// In order to send keyboard events, we'll need to send them from the page's JS 
var load_into_page_context = function(file) { 
    var file_url = chrome.extension.getURL(file); 
    $.get(file_url, function(script_contents) { 
     window.location = 'javascript:'+script_contents 
    }) 

} 

    load_into_page_context("injectme.js"); 

這將加載injectme.js(擴展捆綁)到window.location的,並且使生成的鍵盤事件激活原始網站的事件處理程序。

+1

只是想到Id指出了很多方法注入代碼到頁面.... http://stackoverflow.com/questions/9906083/chrome-extension-invoke-page-script-by-injection http: //stackoverflow.com/questions/9515704/building-a-chrome-extension-inject-code-in-a-page-using-a-content-script,我見過其他一些變化 – PAEz 2012-03-29 13:52:38

相關問題