2

Google Translateのショートカットを作成する Javascript ブックマークレットを作成しています。たとえば、「ESC」または「\」と入力すると、 TextArea がクリアされます。そして、「]」と入力すると翻訳言語が切り替わるショートカットを追加したいと思います。「/」はテキストを発音します。

それぞれがdiv#gt-lang-swapと で囲まれてdiv#gt-src-listenいます。しかし、コンソールでこれらのイベントを発生させることはできません。

私は試した:

document.getElementById("gt-lang-swap").click()

しかし、何も起こりません。これもうまくいきませんでした:

e = document.createEvent("MouseEvents")
e.initMouseEvent("mouseup", true, true, window, 1, 0, 0, 0, 0,
    false, false, false, false, 1, null)
document.getElementById('gt-src-listen').dispatchEvent(e)

誰にもアイデアはありますか?

4

2 に答える 2

0

そのボタンでクリック イベントをトリガーすることもできませんでしたが、URL を変更するだけで UI がそれに応じて更新されるため、その必要はないと考えました。

var components = window.location.hash.substr(1).split('/');
window.location = '#' + components[1] + '/' + components[0] + '/' + components[2];
document.getElementById('source').select(); // optionally focus user back into source field

たとえば、URL が の場合#es/en/hola%20amigo、このコードは最初の 2 つの言語キーを入れ替えて になり#en/es/hola%20amigoます。

document.getElementById('result_box')を使用して、翻訳されたテキストを取得し、それをソース フィールドに入力することもできると思います!

拡張機能を更新する場合はお知らせください。使用したいと思います。

編集:この質問が2年近く前のものであることに気付きました。うまくいけば、誰かがそれが役に立つと思う:)

于 2014-05-27T04:24:27.277 に答える
0

onclickただの代わりに試しましたclickか?

document.getElementById("gt-lang-swap").onclick=function(){

   console.log('clicked it');

   //Other stuff that should happen...
}

または、イベントを発生させる関数を作成してみてください (この関数はhereから取得されます) 。

function fireEvent(element,event){
    if (document.createEventObject){
       // dispatch for IE
       var evt = document.createEventObject();
       return element.fireEvent('on'+event,evt)
    }
    else{
       // dispatch for firefox + others
       var evt = document.createEvent("HTMLEvents");
       evt.initEvent(event, true, true ); // event type,bubbling,cancelable
       return !element.dispatchEvent(evt);
    }
}

に続く:

<input type="text" id="test">
<script>
   obj = document.getElementById("test");
   Event.observe(obj,'change',function(){alert('hi');});
   fireEvent(obj,'change');
</script>

トリックを行う必要があります...

NB: コメントとリンクされた記事で述べたように、この回答にはプロトタイプライブラリの前提条件があります...そのため、(議論の後) この問題に対する理想的な回答ではない可能性があります。

詳しくはこちら

于 2012-11-28T07:19:45.633 に答える