捕获点击并将其存储,直到将目标脚本加载到JS

时间:2018-12-09 16:02:20

标签: javascript jquery

我有一个onclick函数

<a onclick="func()"></a> 

在主页上,用户可以在所有脚本文件加载到该页面上之前单击此链接,因此单击它们的时间过早将获得“空”单击。

注意:我不是在寻找如何更快地加载脚本/与主页同步。

我的问题是,只要载入目标脚本,然后如何继续click,就如何“捕捉”此点击并“存储”它。

我认为.promise()可以解决问题,但我以前从未使用过,有人可以指出正确的方向吗?

1 个答案:

答案 0 :(得分:0)

在页面的开头,定义一个数组,您将在其中使用push()方法存储所有点击。然后在加载js文件时对它们全部进行处理。

<!-- HTML PAGE -->
<script>var clicks = [];</script>

<a href="#" onclick="clicks.push([func, this])">AAA</a>
<a href="#" onclick="clicks.push([func, this])">BBB</a>
<a href="#" onclick="clicks.push([func, this])">CCC</a>

<!-- JAVASCRIPT FILE  -->
<script>
    // The function executed by clicking on a link
    function func(node) {
        console.log(node.innerHTML);
    }

    window.onload = function () {
        // When the page is loaded, rewrite the push() method
        // So, when you click on a link, it should execute the function instantly
        clicks.push = function (click) {
            var fn = click[0],
                node = click[1];
            fn.call(this, node);
        };

        // Execute all saved clicks
        for (var c = 0; c < clicks.length; c++) {
            clicks.push(clicks[c]);
        }
    };
</script>