Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos Safari-更新链接';鼠标悬停时通过XMLHTTPRequest的标题?_Macos_Safari_Uiwebview_Webkit_Xmlhttprequest - Fatal编程技术网

Macos Safari-更新链接';鼠标悬停时通过XMLHTTPRequest的标题?

Macos Safari-更新链接';鼠标悬停时通过XMLHTTPRequest的标题?,macos,safari,uiwebview,webkit,xmlhttprequest,Macos,Safari,Uiwebview,Webkit,Xmlhttprequest,我正在网络视图中进行Mac开发。我想扩展被url缩短器缩短的url,并向用户显示扩展后的url。因此,给定一个src属性设置为的链接,当用户将鼠标悬停在该链接上时,我希望显示标题工具提示 我的链接标签如下所示: <a href="http://is.gd/xizMsr" onMouseOver="myFunction(this);">Here's a shortened link to google</a> 问题是,当我将鼠标悬停在链接上,然后停止移动光标时,标题属性设

我正在网络视图中进行Mac开发。我想扩展被url缩短器缩短的url,并向用户显示扩展后的url。因此,给定一个src属性设置为的链接,当用户将鼠标悬停在该链接上时,我希望显示标题工具提示

我的链接标签如下所示:

<a href="http://is.gd/xizMsr" onMouseOver="myFunction(this);">Here's a shortened link to google</a>
问题是,当我将鼠标悬停在链接上,然后停止移动光标时,标题属性设置正确,但工具提示不显示。我必须再次移动鼠标才能显示工具提示。我不一定要将光标从链接上移开,然后再移回到链接上,但只要在保持悬停在链接上的同时移动几个像素就可以了

我知道,通过在Safari中使用Web检查器和Javascript调试器,可以正确设置标题。事实上,只要我将鼠标悬停在链接上,我就会看到“元素”选项卡中Web Inspector的DOM视图更新为新标题。但是,如果我把手从鼠标上拿开,工具提示永远不会显示

我的假设是,WebKit仅在用户移动鼠标时显示工具提示。即使光标不动,是否有一种方法可以“唤醒”webkit?还是我最好用自己的DHTML魔法来实现它,而不是依赖title属性?

你说的

“问题是,当我停留在 链接,然后停止移动光标, 标题属性设置正确, 但不会显示工具提示。“

很可能是因为启动鼠标悬停时标题不存在,因此无法显示任何工具提示(没有任何可显示的内容)。因此不会出现工具提示。再次移动鼠标时,这次它确实有一个title属性,因此可以显示工具提示。对此你无能为力,这只是浏览器的工作方式

相反,您可以尝试使用jQuery工具提示:

使用jQuery,您应该能够控制它,以便在设置标题后立即显示工具提示。

对于元素(将其移动到锚点上)或具有透明背景的包装器(正z索引),它将(
onmouseover
):

  • 首先添加锚的标题(您必须修改您的函数)
  • 然后更改其(覆盖元素的负数)
    z-index
    (有效地将锚定放在前景中)
  • 通过这种方式,标题将随时可用。如有必要,您可以在步骤1和步骤2之间添加一个
    setTimeout()


    或者您可以简单地使用来修改
    title
    属性值。

    我认为这是Webkit中的一个bug。也许我不明白“onMouseOver”的确切含义,但我是否移动光标应该与此无关。是的,看来我必须做类似的事情才能达到预期的效果。我认为这是Safari中的一个bug,所以我将检查它在WebKit夜间构建中是如何工作的,并在需要时提交一个bug。稍后将更新。
    var myRequest;
    var mousedOverElement;
    var isLoading = false;
    
    function myFunction(anObject) {
      if (isLoading == false) {
    
        isLoading = true;
        mousedOverElement = anObject;
        var link = anObject.getAttribute('href');
        var encodedURL = encodeURI(link);
        var url = 'http://is.gd/forward.php?format=simple&shorturl=' + encodedURL;
    
        myRequest = new XMLHttpRequest();
        myRequest.open("GET", url);
        myRequest.onreadystatechange = onStateChange;
        myRequest.send();
      }
    }
    
    function onStateChange()  {
        if (myRequest.readyState==4) { 
            if (myRequest.status==200) {   
                mousedOverElement.setAttribute('title',myRequest.responseText);
            }
    
            isLoading = false;
        }
    }