2

我正在为 Google Chrome 设计一个扩展程序,我真的很想从中赚取一点现金(如果可能的话),所以我并不急于发布完整的代码。我希望这对我的问题不是一个禁止性的限制。

作为扩展的一部分,我将内容脚本注入所有网站,并且部分内容脚本包括触摸感应覆盖;它是一个不可见的 HTML div,被分配了一个滑动侦听器。这个想法是为每个运行脚本的网站添加滑动功能。

不过,我遇到了一些问题,覆盖似乎在某些页面上“消失”了,尤其是在向下滚动页面之后。它在 google.com 上完美地记录了滑动——滚动或其他方式——但是,例如,在向下滚动页面后,它似乎在 engadget.com 上消失了。(再滚动一点后,它通常会再次开始注册滑动。)打开控制台(F12)之类的操作也会导致它开始注册滑动,并刷新页面(到对象之前的相同位置)让它开始注册再次。

我用于覆盖的 HTML/JavaScript 是这样的:

$("/<div class = \"touch_sensitive_overlay\" style = \"top:40%;opacity:1;position:fixed;height:247px;z-index:99999;width:50%;left:50%;border:2px solid   black;\"></div>").prependTo('body');"

我正在使用 jQuery Mobile 库来注册滑动。

任何有用的见解将不胜感激。


更新:

Sumurai8 提出了一个解决方案,并成功实施。该文档被监听以进行滚动,并且——无论何时发生滚动——覆盖层从注入的 HTML 中移除,然后立即重新注入。通过这种方式,叠加层持续“活跃”并响应所有网站上的输入。谢谢你的好想法,Sumurai8。

4

1 回答 1

0

您可以尝试使用一个小脚本在滚动任何元素时对覆盖层执行“某些操作”。例如$('*').on('scroll', function() { $('#overlay').css( {'top': '0'} ); } );,看看是否能解决问题。虽然它本身并没有做任何事情,但它可能会让 Chrome 再次呈现您的叠加层。

正如您在评论中所说,删除覆盖并重新附加它也会迫使 Chrome 再次呈现它。

于 2013-07-31T14:49:35.363 回答