【问题标题】:How to inspect JQuery UI tooltip?如何检查 JQuery UI 工具提示?
【发布时间】:2013-09-19 21:05:28
【问题描述】:

我的页面上有一个默认的 JQuery UI 工具提示函数调用。有没有办法使用 Inspector 以交互方式设置工具提示 div 的样式?如果我有两个鼠标指针,一个将悬停在一个元素上以保持工具提示显示,第二个将使用 Inspector 并构建样式。但是我只有一只鼠标,一旦它离开元素,工具提示就会消失。在 Inspector 中检查 ":hover" 状态并没有帮助。鼠标移出时工具提示消失。

我正在使用 Chrome,但任何浏览器中的任何技巧都可以。

【问题讨论】:

标签: javascript google-chrome


【解决方案1】:

我找到了一个临时检查它的解决方法:

只需在连接工具提示逻辑的地方实现隐藏设置:

hide: {
          effect: "slideDown",
          delay: 20000
      }

这让您有 20 秒的时间来检查它。如果您需要更多时间,请增加“延迟”属性。 这是我的页面 jquery 工具提示的工作代码:

    $(function() {
    $(document).tooltip({
            tooltipClass: "jqueryTooltip",
            content: function() {
                return $(this).attr('title');
            },
            hide: {
                effect: "slideDown",
                delay: 20000
            }
        });
    });

完成检查后,只需消除延迟即可完成。

注意:我在检查后使用自定义类“jqueryTooltip”来设置工具提示的样式。

【讨论】:

    【解决方案2】:

    我在 Firefox 中的工作解决方案:
    1. 将鼠标悬停在工具提示上(显示工具提示)
    2. 点击CMD-Option-K (OSX) 或CTRL-Shift-K (Windows),打开“Web 控制台”
    3. 键入“debugger”(这将停止 JS 执行,因此工具提示不会消失)
    4.打开“检查员”选项卡,搜索.ui-tooltip
    5. 根据需要进行编辑。注意:即使 JavaScript 停止执行,对 CSS 的更改也会立即生效

    【讨论】:

    • 这对我来说就像一个月前一样有效,但现在不行:(一旦我按下热键,工具提示就会消失。我的解决方案是在控制台中运行setTimeout(function(){debugger}, 1000),快速切换回来并获取工具提示。
    • 这真的很有用
    【解决方案3】:

    我迟到了,但实际上有一个简单的方法可以做到这一点。

    在浏览器的开发控制台中,使用 jQuery 来定位工具提示,如下所示:

    $('.selector').tooltip('open');

    例如,在我的工具提示上有一个类.grey-tooltip,所以我调用$('.grey-tooltip').tooltip('open');。这应该会打开工具提示,然后您可以像检查任何其他可见元素一样检查它们。

    您可以使用一个工具提示的不同方法在他们的文档中进行了描述:https://api.jqueryui.com/tooltip/

    【讨论】:

    • $('.selector').tooltip('show') 用于引导工具提示
    • 好建议。在chrome中,如果没有好的选择器可以使用,也可以在“Elements”中右键元素标记,实时添加ID等属性...
    【解决方案4】:

    在 Chrome 中执行以下步骤: 1- 打开开发者工具( Ctrl + Shift + I )或(右键单击屏幕并选择检查)。

    2- 选择来源:

    3- 在右侧,您找到手风琴,打开“事件侦听器断点”

    4- 你会找到所有的事件,打开“鼠标”,然后选择“mouseout”事件,这将停止执行代码并在“mouseout action”之前停止。

    5- 转到应用程序屏幕,并尝试只悬停具有工具提示的项目,然后屏幕将冻结,您会找到所需的工具提示站。

    注意:如果您错误地悬停了其他项目,您可以通过单击恢复(蓝色按钮)来恢复代码的执行,然后再次尝试悬停。 如果要恢复代码的正常执行,请取消选择“mouseout”事件,然后单击恢复(蓝色按钮)。

    在 Firefox 中也一样,不同的是“Sources”标签被命名为“Debugger”。

    【讨论】:

    • 谢谢,这是一个很好的方法
    • 最好的方法!
    【解决方案5】:

    简单的方法是在显示工具提示时按 F8 暂停 js

    【讨论】:

      【解决方案6】:

      应该可以修改 CSS 以使工具提示始终可见,而不是仅在悬停时可见,此时您可以通过检查器调整 div 的样式并实时查看它是如何受到影响的。

      【讨论】:

      • 是的,但是要修改哪个 CSS?例如,在此页面上:jqueryui.com/tooltip - 如果我想以交互方式设置将鼠标悬停在输入框(“您的年龄”)上时出现的工具提示,该怎么办?据我所知,将鼠标移出不仅会隐藏工具提示,还会将其从 DOM 中删除。
      • 看来,我的解决方案在这里行不通。您可以考虑使用自定义 div 作为工具提示而不是默认标题属性。但是,在我刚刚进行的少量谷歌搜索中,我没有看到这样的选择。
      【解决方案7】:

      如果您在最新的 Google Chrome 中打开开发者工具,您应该会看到元素选项卡已被选中。在必须悬停的元素上,只需右键单击它并打开“强制元素状态”菜单以选择 :hover 选项。

      【讨论】:

      • 这是我尝试的第一件事。但正如我在问题中所写,检查 Inspector 中的“:悬停”状态不会使工具提示出现,它似乎对 javascript 事件没有影响。
      【解决方案8】:


      您不能在浏览器的检查器中更改 jQuery 工具提示的样式,因为正如您所说,它会在鼠标移出时从 DOM 中删除。

      但是,使用以下代码,这是我为更改样式所做的更改:

      $("#myElement").attr({
          title: "my tooltip text"
      }).tooltip();
      
      $("#myElement").tooltip({
          // the .tooltip class is applied by default anyway
          tooltipClass: "tooltip"
      });
      
      1. 在 JavaScript 中输入debugger;,在前面的代码之前

      2. 在 Firefox 中,按 F12 打开Firebug(如果没有,请下载)

      3. 选择脚本标签并点击重新加载

      4. 现在调试器已激活,突出显示 $("#myElement").tooltip 来自第二个代码块(没有括号),右键单击突出显示的文本,然后 选择Add Watch

      5. 在右侧窗口的观看标签下,点击+$("#myElement").tooltip 旁边展开所有属性

      6. 在此展开 Constructor,然后是 DEFAULTS,然后 模板 查看工具提示的 HTML


      这就是 jQuery 工具提示的暴露 HTML 结构:

      <div class="tooltip">
          <div class="tooltip-arrow"> ... </div>
          <div class="tooltip-inner"> ... </div>
      </div>
      


      ...现在您可以应用 CSS,如下所示:

      .tooltip {
          background-color: blue;
          border: 2px solid black;
          border-radius: 5px;
      }
      .tooltip-arrow {
          /* hackery, placing the arrow where it should be: */
          margin-bottom: -7px;
      }
      .tooltip-inner {
          /* hackery, making all browsers render the width correctly: */
          width: 300px;
          min-width: 300px;
          max-width: 300px;
      
          /* hackery, removing some unknown applied background: */
          background: none;
          background-color: none;
      
          color: white;
          text-align: center;
      }
      


      上面 CSS 中提到的所有“hackery”都是我必须做的,才能让 Bootstrap 与 jQuery 很好地配合使用(它们都有一个 tooltip,这可能会相互冲突 - - 请参阅https://stackoverflow.com/a/19247955 了解更多信息)。

      【讨论】:

      • 我找到了一些fiddle,添加了调试器命令并手动添加了Watch(右键单击不起作用)。但是,我找不到 Constructor->DEFAULTS->template,这是我看到的结构:s25.postimg.org/7enmrwe9r/img11.jpg
      • @camcam -- 哇,很奇怪,jsFiddle 似乎增强了任何创建的 JavaScript 对象,因此可能无法以这种方式看到。要重现我所做的,您需要让这段代码在您自己的 HTML 中运行。
      • 我在我的真实网站上检查了这个,但 DEFAULTS-> 模板在任何地方都没有。此外,您发现的工具提示 html 结构与我发现的不同(在我的回答中)。可能 jQuery ui 版本不同(我用的是 1.10)。
      【解决方案9】:

      这是我所做的:

      jQuery(".myDiv").attr("title", 'Hello');
      jQuery(".myDiv").tooltip({close: function( event, ui ) {
        console.log(jQuery(ui.tooltip[0]).html());
      }});
      

      控制台内容是:

      <div class="ui-tooltip-content">Hello</div>
      

      另外,我在console.log函数上放了一个断点,然后检查了&lt;/body&gt;结束标记之前的页面结构,还有更多:

      <div id="ui-tooltip-0" role="tooltip" class="ui-tooltip ui-widget ui-corner-all ui-widget-content" style="position: relative; top: -463.60003662109375px; left: 1px; display: block; opacity: 1;"><div class="ui-tooltip-content">Hello</div></div>
      

      可以使用 Inspector 动态更改工具提示样式(在 Chrome 中测试)。

      【讨论】:

        猜你喜欢
        • 2017-12-12
        • 2023-03-07
        • 2014-06-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多