标签: javascript-events

Gmail似乎捕获了所有键盘事件.有什么方法可以绕过那个?

我正在编写一个Chrome扩展程序,用于启动带有键盘快捷键的脚本.它在大多数页面上运行良好,但我意识到在Gmail上它没有:似乎所有键盘事件都是由Gmail捕获的,并没有冒泡到我的功能.

我有一个内容脚本(在Chrome扩展程序中,这是添加到您想要的任何页面)(当然简化):

document.body.addEventListener('keypress', myFunction, true);
function myFunction(event) {
    console.log("yay, Gmail didn't let me down!");
}
Run Code Online (Sandbox Code Playgroud)

但实际上,Gmail确实让我失望了.我知道脚本已加载.我尝试了不同的变体window.addEventListener和其他事件类型无济于事.

有人知道绕过这个的方法吗?我试着看看GreaseMonkey脚本是否可以做到这一点,这让我来到这里:http://code.google.com/p/gmail-greasemonkey/但这对我没有帮助.

谢谢!

javascript gmail google-chrome javascript-events google-chrome-extension

10
推荐指数
1
解决办法
1118
查看次数

什么是this.parentElement?

pg.myfunc = function(){
    var i = 1, j = 2;
    this.selected = 1;
    xx.newObject = this.parentElement;

...
Run Code Online (Sandbox Code Playgroud)

在xx.newObject = this.parentElement;做什么?

javascript javascript-events

10
推荐指数
2
解决办法
1万
查看次数

如何使用Javascript获取调用者元素?

我有一个id为"tbl"的表,它有2行3列.每个单元格(td)都有一个明确定义的id.此外,该表有一个调用函数foo()的onclick事件.只要单击任何单元格,就会生成onclick().表标签是

<table id ="tbl"width ="80%"height ="20%"onclick ="javascript:foo()">

我也尝试过javascript:foo(this)

我想找出被点击的表格单元格的id.

我试过以下javascript

function foo(e)
{
    var sender = (e && e.target) || (window.event && window.event.srcElement);
    alert("Sender" + sender.id);
}
Run Code Online (Sandbox Code Playgroud)

这适用于Google Chrome和IE,但不适用于Firefox.在Firefox中,发件人未定义.如何在Firefox中获取调用者单元格?

html javascript javascript-events

10
推荐指数
1
解决办法
1万
查看次数

有没有办法用Javascript跟踪焦点?

  • 我们需要跟踪用户现场的有效时间
  • 大多数用户完成后,会打开选项卡并移动到另一个选项卡
  • 现场时间非常不准确

是否有Javascript事件来跟踪当前标签的"失去焦点"?

javascript analytics google-analytics event-handling javascript-events

10
推荐指数
1
解决办法
5049
查看次数

.bind('input',function(){})在IE8中不起作用

我一直在使用.bind('input')jQuery,因为它似乎是检测他们是否复制/粘贴到框中的最佳解决方案,或者只是键入然后从浏览器中选择下拉菜单.我和其他人的问题change()是,至少对我来说,它们只会在用户对盒子的焦点丢失时触发.

我的问题是.bind('input')在IE8中对我不起作用,但在FF4/5中有效.我一直试图寻找替代方案,但已经出现了问题.有什么建议吗?

jquery javascript-events

10
推荐指数
1
解决办法
1万
查看次数

HTML内容可编辑div:选择文本事件

我有一个令人满意的div

<div class="editable" contenteditable="true"></div>

用户可以在那里输入任何内容.当用户在div中进行选择时,有没有办法获取事件.

就像是:

$('.editable').onSelection(function(e, selection){alert(selection);}
Run Code Online (Sandbox Code Playgroud)

html javascript jquery html5 javascript-events

10
推荐指数
2
解决办法
8009
查看次数

在使用匿名函数传递参数时,addEventListener会为同一句柄多次触发

出于某种原因,当将参数传递给匿名函数时,事件侦听器会为每个元素触发两次.即,元素上的click事件el将注册一次,因此触发一次.

el.addEventListener("click", handle, false);
el.addEventListener("click", handle, false);
Run Code Online (Sandbox Code Playgroud)

但是如果我想将自己的参数传递给它,它将会注册并触发两次.

el.addEventListener("click", function() { handle(event, myArgument); }, false);
el.addEventListener("click", function() { handle(event, myArgument); }, false);
Run Code Online (Sandbox Code Playgroud)

问题是为什么以及解决方案是什么?

我在其他地方寻找,似乎无法找到解决方案或理解为什么会出现这个问题.我尝试在如何将参数传递给addEventListener中传递的侦听器函数中实现解决方案?但他们没有帮助 -

我做了基本的匿名函数或闭包,然后是更高级的版本,如下所示,但确实有效.

我不明白为什么传递没有参数导致元素事件注册一次并传递参数导致元素事件注册两次.

这是代码:

<html>
    <head>
        <script type="text/javascript">
            var handle_2 = function(evt, type) {
                var test;
                switch (type) {
                    case "focus": 
                        console.log(evt.target.value);
                        break;
                    case "click":
                        console.log(evt.target.id + " was clicked");
                        break;
                    default: console.log("no type found");
                }
            };

            window.onload = function() {
                var textbox = document.getElementById("t1");
                var button = document.getElementById("btn");
                textbox.value …
Run Code Online (Sandbox Code Playgroud)

javascript events anonymous-function javascript-events addeventlistener

10
推荐指数
2
解决办法
2万
查看次数

Javascript函数在nodejs中返回未定义的值

我正在编写获取数据的代码.首先我调用**getsomedata**函数来获取数据和里面的getsomedata函数我调用另一个函数getRandomdata来获取数据并将其返回到前一个函数但它返回undefined.但在getRandomdata数据中可以看到console.log.我需要使用callbacks吗?

router.get('/get-data', function (req, res, next) {
    var result = getsomedata(some_parameter);
    console.log(result);   // receiving undefined
    res.send(result);
});

function getsomedata(some_parameter_recieved) {
    var getsomedata = getRandomdata(random_params);
    console.log(getsomedata);    // receiving undefined
    return getsomedata;
}

function getRandomdata(random_params_recieved) {
    // after some calculation 
    console.log(random_data);           // receiving proper data
    return random_data;
}
Run Code Online (Sandbox Code Playgroud)

javascript callback javascript-events asynccallback node.js

10
推荐指数
1
解决办法
2万
查看次数

触发单击时超出最大调用堆栈大小

我真的想做一些简单的事情.单击某个元素,我触发另一个元素的单击,但我在我的控制台上得到以下错误.

Uncaught RangeError: Maximum call stack size exceeded

我的代码如下;

$('body').on('click', '.actual-click-element', function(event) { 
    $('.trigger-click-element').trigger('click');
    event.preventDefault(); 
});
Run Code Online (Sandbox Code Playgroud)

我想知道为什么我得到这个错误,我不知道这是如何递归的.有任何想法吗?

javascript jquery javascript-events

10
推荐指数
1
解决办法
1万
查看次数

requestAnimationFrame何时执行?

浏览器读取并运行JavaScript文件,文件中写入的同步任务立即变为执行中任务,setTimeout回调变为macrotasks,并且promise回调变为微任务.一切都是好的.

在我见面之前,我以为我掌握了JavaScript事件循环requestAnimationFrame.

@TJ Crowder为我提供了以下代码片段.

const messages = [];
setTimeout(() => {
  // Schedule a microtask
  Promise.resolve().then(() => {
    log("microtask");
  });
  
  // Schedule animation frame callback
  requestAnimationFrame(() => {
    log("requestAnimationFrame");
  });
  
  // Schedule a macrotask
  setTimeout(() => {
    log("macrotask");
  }, 0);
  
  // Schedule a callback to dump the messages
  setTimeout(() => {
    messages.forEach(msg => {
      console.log(msg);
    });
  }, 200);

  // Busy-wait for a 10th of a second; the browser will be eager to repaint when this task completes
  const …
Run Code Online (Sandbox Code Playgroud)

javascript asynchronous javascript-events promise requestanimationframe

10
推荐指数
1
解决办法
2398
查看次数