我有一个html元素,(为了简单起见,我说了一个标签),它有一个标题,所以当您将鼠标悬停在标签上时,会出现一个工具提示。

我希望工具提示显示一些关联的“当前”数据的快照。实际上,标签所指向的对象的当前价格,但是与此类似的可以是任何可能随时间变化的数据。

在本机JavaScript中,如何检测工具提示的激活,以便可以在显示工具提示之前重新计算数据?

我知道我可以使用setInterval()或其他方法来保持标题字符串为最新,但是仅在显示工具提示时重新计算标题字符串会更有效。

最佳答案

这样的事情可能会起作用,但是您会受到更新数据请求的延迟的影响(假设更新的价格数据的源是http请求或套接字连接),并且可能不会更快浏览器将显示工具提示。这肯定不会是一致或可靠的。

<p id="text" title="initialtitle">Text</p>
<script>
    var n = 0;

    document.getElementById("text");
        text.onmouseover = function() {
            n++;
            text.title = n;
    };
</script>


根据您正在执行的操作的具体细节以及您有多少回旋余地,另一种解决方案可以是打开服务器的WebSocket,然后在服务器更改时用更新的价格信息更新所有客户端。这样,数据就可以尽可能快地发送到cleint,而无需进行持续的http轮询,并且不需要计时器。

当然,如果数据源是JavaScript本身内的计算,而不必从服务器获取信息,则仅需对上述内容进行修改即可。

Here's a jsfiddle to play around with.

10-06 12:29
查看更多