Chrome扩展程序自定义光标

我构建了一个Google Chrome扩展程序,可以在网站中放置一些IMG标记。 这个img标签:hover必须显示一个自定义光标。 该扩展使用jQuery作为其注入的核心脚本。 我尝试了以下方法:

1。

var cursor = 'url('+chrome.extension.getURL('icons/cursor.cur')+')'; $('#myImgId').css({ 'position': 'absolute', 'top':'5px', 'left':'5px', 'cursor':cursor }); 

这是最好的工作。 在较小的站点上,它显示光标。 在较慢的加载站点上它没有。 但在小网站上它有时会失败。


2。

 var cursor = 'url('+chrome.extension.getURL('icons/cursor.cur')+')'; $('#myImgId{cursor:'+cursor+'}').appendTo('head'); 

这什么都没做。


3。

在manifest.json中我注入了css。

 "content_scripts": [ { "matches": ["http://*/*"], "css": ["css/style.css"], "js": ["j/c.js", "j/s.js"] } 

css文件只有光标:url(icons / cursor.cur)因为我不知道,如何在css文件中获取真正的url。 这根本不起作用。 我认为它必须像这样工作,但我没有在code.google上找到这方面的参考。

事实certificate,它的工作原理css规则应该写成: {cursor:url(...),default;}

对于你的第三种方法,请在css中尝试

 #myImgId { cursor:url('chrome-extension://__MSG_@@extension_id__/icons/cursor.cur'); } 

(因bug而无效)

您不应该为此添加Chrome扩展程序; 它是CSS的标准function,可以在元素上移动时更改光标,包括将其更改为自定义图像的function。

你应该可以在你的CSS中添加这样的东西:

 .myimage { cursor: url(icons/cursor.gif);} 

无需编写任何脚本。

但是,在各种浏览器中,此function存在漏洞,怪癖和实现差异。

要知道的最大的怪癖是Internet Explorer希望光标文件是.cur文件,而所有其他浏览器都需要常规的图像文件(例如.gif)。 如果您希望它跨浏览器工作,您需要提供两个版本的图标,并使用特定于浏览器的测试或黑客入侵您的CSS以使其选择正确的。

可以在此处找到CSS cursorfunction及其在各种浏览器中的怪癖和支持的非常好的摘要: http : //www.quirksmode.org/css/cursor.html

此页面还指出“图像在Chrome中出现乱码”。 这对您来说可能是个坏消息,但测试暂时没有更新,因此信息适用于Chrome 5,所以如果有错误,那么现在可能已经修复了。

加上:

 var css = ''; if ($("head").length == 0) { $("body").before(css); } else { $("head").append(css); } 

去除:

 $("#myCrossCursor").remove(); 

不要忘记将.cur文件添加到清单中:

 "web_accessible_resources": [ "Cursors/myCrossCursor.cur", ...