2015-07-12 2 views
1

Я хочу написать расширение Chrome, которое может отправлять сообщения с помощью Skype для Интернета (https://web.skype.com/en/). Я могу получить текст в текстовом поле, но я не могу заставить его вызвать клавишу Enter. Как это сделать?Chrome Extension keypress для Skype Web

Расширение загружается нормально и помещает текст в поле ввода, но там он останавливается. Я также попытался активировать события изменения и входные события. Но ничего не происходит.

Я использую функцию ожидания, потому что Skype занимает некоторое время, чтобы загрузить.

Мой manifest.json

{ "manifest_version": 2, "name": "SkypeTest", "version": "0.0.1", 
    "content_scripts": [{"matches": ["https://web.skype.com/*"], 
    "js": ["jquery-2.1.4.min.js", "skypeTest.js"]}]} 

Мои skypeTest.js

;(function() { 
    var e = jQuery.Event('keydown', { which: 13 }); 
    function init(){ 
     console.log('Script running'); 
     var wait = function() { 
      var txtArea = $("textarea[name='messageInput']"); 
      if (txtArea.is(':visible')) { 
       clearTimeout(waiting); 
       txtArea.val('Hello Skype'); 
       txtArea.trigger('focus').trigger(e); 
      } 
     }; 
     var waiting = setInterval(wait, 5000); 
    } 
    init(); 
})(); 

Это поле ввода

<textarea tabindex="10010" maxlength="2000" data-bind="value: messageBody, css: {hide: !isEnabled()}, 
    valueUpdate: ['afterkeydown','propertychange','input'], 
    event: { keypress: handleKeyPress, keydown: handleKeyDown, input: handleInput, 
    focus: onFocus, blur: onBlur, paste: onPaste }, hasFocus: chatInputFocus, 
    l10n_attr: {'placeholder': 'area_text_insertText'}, attr: { 'aria-label': label }, 
    template: { afterRender: handleFocus }" name="messageInput" class="inputField fontSize-p" placeholder="Type a message here" 
    aria-label="Chat input" style="height: 30px;"></textarea> 
+0

См. [Это] (https://code.google.com/p/chromium/issues/detail?id=52408) и [это] (https://bugs.webkit.org/show_bug.cgi?id = 16735) – wOxxOm

+0

Спасибо @wOxxOm. Я знаю об ошибке в Chrome. Но это похоже на что-то другое. В отладчике я вижу правильный код ключа: n.Event {type: "keydown", который: 13, timeStamp: 1436756197584, jQuery2140713275273796171: true} –

ответ

0

Похоже, это не представляется возможным из-за функции безопасности Chrome. Вместо этого я переключился на Electron.