Javascript 自定义光标在Chrome中无法正常工作

Javascript 自定义光标在Chrome中无法正常工作,javascript,css,html,canvas,Javascript,Css,Html,Canvas,我很难让chrome正确显示我的自定义光标,但它似乎可以在FireFox中正常工作 给大家一点背景,作为我尝试使用HMLT5/Javascript加速的一部分,我正在使用新的canvas元素制作一个小型射击游戏,我正在使用Axialis cursor Workshop创建的自定义范围,如cursor,下面是画布的html和css: <canvas id="canvas" class="block" width="800" height="700" onSelectStart

我很难让chrome正确显示我的自定义光标,但它似乎可以在FireFox中正常工作

给大家一点背景,作为我尝试使用HMLT5/Javascript加速的一部分,我正在使用新的canvas元素制作一个小型射击游戏,我正在使用Axialis cursor Workshop创建的自定义范围,如cursor,下面是画布的html和css:

<canvas id="canvas" class="block" width="800" height="700"
        onSelectStart="this.style.cursor='url(cursors/scope.cur), crosshair'; return false;"/>

#canvas
{
    cursor: url(../cursors/scope.cur), crosshair;
    background: url(../images/canvas_background.jpg);
}

#帆布
{
游标:url(../cursors/scope.cur),十字线;
背景:url(../images/canvas_background.jpg);
}
在chrome中,我看到一条关于scope.cur文件的警告:“资源被解释为图像,但使用MIME类型的application/octet stream传输。”。当我将鼠标移动到画布区域的左上角时,我可以看到光标已绘制,但光标的“热点”不在光标的中心

在firefox中,这样做没有问题,我仍然可以看到相同的光标,光标的“热点”位于我想要的中心

你知道我做错了什么吗?我怎样才能为chrome修复它?标准十字光标在chrome中运行良好(因为它的“热点”位置正确),但它不太符合我的目的


你可以自己看,只需在chrome和firefox中将光标移动到左上角即可看到区别。

我认为这里有两个不同的问题

  • 第一个(“解释为图像但使用MIME类型应用程序/八位字节流传输的资源”)应该是固定的服务器端。服务器必须将scope.cur作为图像MIME而不是八位字节流发送。您可以尝试更改.cur文件(即.png)的格式,也可以使用正确的MIME编写.htaccess文件

  • CSS3“cursor”应该有两个属性,但我在Chrome中尝试过,它似乎不起作用:

    游标:url(../cursors/scope.cur)-10px-10px,十字线


  • 我认为这里有两个不同的问题

  • 第一个(“解释为图像但使用MIME类型应用程序/八位字节流传输的资源”)应该是固定的服务器端。服务器必须将scope.cur作为图像MIME而不是八位字节流发送。您可以尝试更改.cur文件(即.png)的格式,也可以使用正确的MIME编写.htaccess文件

  • CSS3“cursor”应该有两个属性,但我在Chrome中尝试过,它似乎不起作用:

    游标:url(../cursors/scope.cur)-10px-10px,十字线


  • 对于任何感兴趣的人来说,我最终解决了这个问题,尽管这有点困难

    我第一次尝试使用空白光标,但后来Chrome将其渲染为黑色正方形。。因此,我决定将目标绘制为画布的一部分,并使用一个光标,该光标的热点位于0,0,并且除了0,0平铺外,该平铺是空白的,该平铺与目标具有相同的颜色


    一旦你开始游戏,你就可以看到结果,这不是一个很好的解决方案,但仍然有效。

    对于任何感兴趣的人来说,我最终解决了这个问题,尽管这有点困难

    我第一次尝试使用空白光标,但后来Chrome将其渲染为黑色正方形。。因此,我决定将目标绘制为画布的一部分,并使用一个光标,该光标的热点位于0,0,并且除了0,0平铺外,该平铺是空白的,该平铺与目标具有相同的颜色


    一旦你开始游戏,你就可以看到结果,这不是一个很好的解决方案,但仍然有效。

    我的回答现在可能已经太迟了,但这应该在chrome中起作用:

    cursor:url(../cursors/scope.cur)4,十字线

    您可能还需要编写一个小脚本,使用jQuery
    $.browser
    属性检查浏览器类型

    请阅读以下内容:


    注意:我相信MIME类型的问题已经得到解决。

    我的回答现在可能已经太迟了,但这在chrome中应该是可行的:

    cursor:url(../cursors/scope.cur)4,十字线

    您可能还需要编写一个小脚本,使用jQuery
    $.browser
    属性检查浏览器类型

    请阅读以下内容:

    注意:我相信MIME类型问题已经得到解决。

    要解决“资源解释为图像…”警告:

    • 创建名为
      .htaccess

    • 编写以下命令:
      AddType image/vnd.microsoft.icon.cur

    • 保存在文件夹
      /cursors
      或任何父文件夹中(通常是站点根目录
      /

    这应该可以在Apache服务器上使用

    关于此解决方案。

    要解决“资源解释为图像…”警告:

    • 创建名为
      .htaccess

    • 编写以下命令:
      AddType image/vnd.microsoft.icon.cur

    • 保存在文件夹
      /cursors
      或任何父文件夹中(通常是站点根目录
      /

    这应该可以在Apache服务器上使用


    关于此解决方案。

    我在这里找到了一些相关信息:嗨,Lorezo,谢谢你的回复,本质上没有“服务器端”,如果我将文件更改为.png,我会丢失光标文件中的热点信息吗?我认为CSS标准不会将热点信息转换为.cur文件。我在这里找到了一些相关信息:嗨,Lorezo,谢谢你的回复,本质上没有“服务器端”,如果我将文件更改为.png,我会丢失光标文件中的热点信息吗?我认为CSS标准不会将热点信息转换为.cur files.jQuery$。浏览器是。我想改用raccomend。@BBog-是的,我听说modernizer在处理跨浏览器问题方面做得更好。jQuery$。browser是。我会改用raccomend。@BBog-是的,我听说Modernizer在处理跨浏览器问题方面做得更好。