Google翻译中的div的Click或mouseup事件

时间:2012-11-28 07:00:33

标签: javascript javascript-events

我正在编写一个Javascript书签,为Google Translate创建一个快捷方式。例如,键入“ESC”或“\”将clear the TextArea。现在我想添加一个快捷方式,当输入']'时,它将交换翻译语言;并且'/'将发音。

每个都包含在div#gt-lang-swapdiv#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)

有没有人有任何想法?

2 个答案:

答案 0 :(得分: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>

应该做的伎俩...

N.B。:正如评论和链接文章中所提到的,这个答案有prototype库的先决条件...... 因此,(在讨论之后)可能不是解决这个问题的理想答案。

有关详情,请参阅here

答案 1 :(得分:0)

我也无法触发该按钮上的点击事件,但我认为您不需要,因为您只需修改网址,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

因此,例如,如果网址为#es/en/hola%20amigo,则此代码会交换前两个语言密钥,使其变为#en/es/hola%20amigo

我想您甚至可以使用document.getElementById('result_box')获取已翻译的文本并将其放入源字段中!

如果您更新扩展程序,请告诉我,我很乐意使用它。

编辑:刚才意识到这个问题已经快两年了。希望有人发现它很有用:)