如何检查 JQuery UI 工具提示?

Posted

技术标签:

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

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

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

【问题讨论】:

:hover state in Chrome Developer Tools的可能重复 【参考方案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"
);

    在 JavaScript 中输入debugger;,在前面的代码之前

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

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

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

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

    在此展开 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://***.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 中测试)。

【讨论】:

以上是关于如何检查 JQuery UI 工具提示?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 jQuery 日期选择器中为禁用日期添加工具提示?

jQuery UI 工具提示小部件中的 AJAX 内容

是否可以在 jquery 函数中为 JQuery UI 工具提示设置不同的 UI 主题

点击后jQuery UI Tooltip不会消失

Jquery UI 工具提示不显示在任何东西上

如何更改 pnotify Jquery 插件的默认宽度?