5

是否可以通过JavaScript 中的Ctrl+来了解我的用户在我的网页上搜索的内容?F因此,当用户使用Ctrl+F搜索某些内容时,JavaScript 可以捕获此操作(和搜索短语)并将其发送回服务器。

可能的?如何?

4

3 回答 3

1

不,不可能。在某些浏览器上,您可以捕获组合键Ctrl+ F,但您无法窥探用户搜索的内容。在其他浏览器上,您根本无法捕捉Ctrl+ F

如果有什么安慰的话,您可能会在 IE6 上使用一个安全漏洞。

于 2013-01-07T00:19:11.330 回答
1

不可以。出于所有安全原因,您永远不能访问页面外的浏览器 UI 元素。您可以捕获Ctrl+F并自行处理。但是,当然,它看起来与浏览器自己的 UI 元素不同。

于 2013-01-07T00:21:36.077 回答
1

我刚刚找到了一种在某些情况下可能会有所帮助的解决方法。

请注意,文档和可滚动元素总是滚动到下一个搜索到的位置——我们可以利用它并创建一个“隐藏”的可滚动元素并等待它滚动。当它滚动时,您可以读取它滚动到的位置并获得匹配的单词。

http://jsfiddle.net/oz6gum90/6/

HTML:

<div id="hiddenScrollableContent">
    <div></div> <!-- first element must be empty -->
    <div>car</div>
    <div>cat</div>
    ...
</div>

CSS:

#hiddenScrollableContent{
    overflow: scroll;
    position:absolute;
    height:20px;  /* can't be zero ! */
    opacity:0.01; /* can't be zero ! */
    pointer-events: none;
}
#hiddenScrollableContent div{
    height: 100px;
}

JS:

$('#hiddenScrollableContent').scroll(function(e){
    var top = $(this).scrollTop();

    if (top==0)
        return; //prevents endless loop

    var index = Math.round(top / 100);
    var element = $('div', this).eq(index);
    var elementsText = element.text();
    $(this).scrollTop(0);

    console.log('top:'+top, 'index:'+index);

    $('span').text(elementsText);
});
于 2014-10-14T16:44:11.183 回答