【问题标题】:waitForKeyElements(); - Stop a script firing on a popup in Chrome Extension?waitForKeyElements(); - 在 Chrome 扩展程序的弹出窗口中停止脚本触发?
【发布时间】:2012-12-23 01:20:22
【问题描述】:

这个问题是another question 的后续问题,需要询问并保证发布新帖子,所以如果我提到的事情可能在没有阅读其他问题的情况下不清楚。

在使用实用程序 waitForKeyElements() 时,我遇到了一个问题,即 div 包含在同一 URL 中包含的小弹出窗口中。我的扩展程序目前在Twitter 站点上运行,我的意图是配置文件页面上包含的div(例如http://twitter.com/todayshow)被移动到页面上另一个div 之上。我通过waitForKeyElements() 执行此操作,因为使用此实用程序解决了一些加载问题。

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

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

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

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

编辑:当插入 false 参数时,它在通过 URL 栏直接转到个人资料时起作用,如果您在个人资料上并使用链接访问个人资料,则脚本未插入,我的扩展失败。所以这也需要解决,或者完全替代方法。

【问题讨论】:

  • div.module.profile-card.component.profile-header 将是最容易使用的示例,因为您可以更轻松地看到它发生了什么。

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


【解决方案1】:

我有一个脑电波,我可以使用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.
}

这解决了我遇到的问题,我的扩展程序现在工作正常,但是我会留下这个问题,以防将来有人回来。

【讨论】:

  • 如果每种类型(movee 和 target)只有一个 div 就可以了。
猜你喜欢
  • 2012-05-07
  • 1970-01-01
  • 2023-01-02
  • 1970-01-01
  • 2011-09-27
  • 1970-01-01
  • 2012-03-08
  • 1970-01-01
  • 2017-12-29
相关资源
最近更新 更多