使用省略号隐藏文本溢出时,防止Safari显示工具提示

时间:2014-01-07 14:33:00

标签: javascript html css safari tooltip

如何将鼠标悬停在链接中文本的截断部分上时,如何完全删除显示的默认浏览器工具提示?

由于css省略号规则,文本被截断:

text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;

当我将这些规则应用于固定宽度div时,我得到一个html工具提示。 (仅限Safari ,不适用于Firefox或Chrome。)

这是a jsfiddle

我尝试添加一个JS preventDefault并添加一个空的title属性,但这些都不起作用。

5 个答案:

答案 0 :(得分:5)

显示带有文本溢出的元素的工具提示的功能,以及没有非空title的省略号是WebKit核心的一部分,但默认情况下它处于关闭状态。只有Safari会覆盖它并启用了该行为。没有办法从应用程序代码中关闭它。

作为解决方法,在元素内添加一个空块元素,该元素具有隐藏text-overflow: ellipsis的溢出。这可以是真实的,如@bas的答案已经显示的那样,或者通过用CSS创建一个伪元素:

&::before {
  content: '';
  display: block;
}

(使用SCSS语法)。如果您使用Sass并创建一个mixin封装文本溢出与省略号的隐藏,这可以是一个很好的添加,而无需任何额外的HTML标记。

答案 1 :(得分:4)

我也没有被使用When (/^I click on "(.*?)"$/, (text) => { ... }); ,因为它是一个链接。我受到了user1271033答案的启发。这些示例对我不起作用,但在截断div中的文本之前添加一个空div对我有效。

示例:

pointer-events:none

答案 2 :(得分:1)

这个http://schoonc.blogspot.ru/2014/11/safari-text-overflow-ellipsis.html怎么样?也许它适合你。例子:

<div class="text-container">longlonglonglongname</div>
.text-container {
    overflow: hidden;
    text-overflow: ellipsis;
    ...
    &:before {
        content: '';
        display: block;
    }

<div class="text-container" data-name="longlonglonglongname"></div>
 .text-container {
     overflow: hidden;
     text-overflow: ellipsis;
     ...
     &:before {
         content: attr(data-name);
     }

答案 3 :(得分:0)

您可以通过设置pointer-events:none来禁用Safari中的工具提示;在CSS中。但请注意,这会禁用所有指针事件,因此如果它是一个链接,那么该链接也会被禁用。

答案 4 :(得分:0)

在代码中添加css

 pointer-events: none;

即使你可以为它创建新的css并在任何需要的地方应用。

你可以这样做:

<div id="fix" title=""><a href="http://www.google.com"><span style="pointer-events:none;">Lorem ipsum dolor sit amet</span></a></div>

有一个looke

https://jsfiddle.net/poojagayake/tx06vq09/1/