waitForKeyElements(); - 停止在Chrome扩展程序中弹出一个脚本?

时间:2013-01-09 03:07:20

标签: javascript google-chrome google-chrome-extension content-script

这个问题是another question的后续问题,需要提出并保证一个新帖子,所以如果我在没有阅读其他问题的情况下提及可能不明确的事情,请原谅。

使用实用程序waitForKeyElements()时,我遇到一个问题,其中div包含在同一网址中包含的小弹出窗口中。我的扩展程序目前正在Twitter网站上投放,我的意图是,个人资料页面上包含的div(例如http://twitter.com/todayshow)会移到页面上的另一个div上方。我是通过waitForKeyElements()执行此操作的,因为使用此实用程序可以解决一些加载问题。

但是,在个人资料页面上,您可以单击指向另一个用户名称的链接,该名称会弹出一个小窗口(位于同一窗口/选项卡内,位于同一URL上),显示有关它们的一些信息以及之前的一些推文。这里的问题是这个弹出窗口中出现了相同的div,然后被移动到弹出窗口后面的主页面,它不应该在那里。在配置文件页面上,可以通过将false参数插入waitForKeyElements()来停止此操作,但是在非配置文件页面上仍然可以激活此弹出窗口,然后移动到主页面上,因为div我希望在个人资料页面上移动它仍然存在于此处,导致明显的问题。

我想知道是否有办法解决这个问题,因为bugs in Chrome阻止我排除这些页面。到目前为止(只是头脑风暴)我在想:

  • 在开头不存在div的网页上,创建一个空的,意味着false将处理此问题。
  • 以某种方式阻止脚本触发给定的URL,尽管由于Twitter的工作方式,这将需要监视OnClick()和页面URL(我认为),我不确定该怎么做。
  • 弹出窗口时停止运行,但我几乎不知道从哪里开始。

感谢任何帮助。任何与此问题相关的必要代码都可以在前两个链接中找到,我可以通过快速访问Twitter看到我面临的问题。

编辑:插入false参数时,如果您在个人资料中并使用链接转到个人资料,则可以通过网址直接转到个人资料,未插入脚本,我的扩展程序失败。所以这也需要解决,或者完全替代方法。

1 个答案:

答案 0 :(得分:0)

我有一个脑电波,我可以使用insertAfter()插入<div>我最初移动前<div>之前移动的<div>。弹出窗口中不存在此waitForKeyElements ( "jQuery selector for div(s) you want to move", // Opposite to what it was. moveSelectDivs ); function moveSelectDivs (jNode) { jNode.insertAfter ("APPROPRIATE JQUERY SELECTOR"); // Again, the opposite. } ,这意味着在不应该的情况下不会将任何内容移动到后页。

关于上一个问题,我的代码现在只是:

{{1}}

这解决了我遇到的问题,我的扩展程序现在运行得很好,但我会留下这个问题,以防将来有人再回来。