我在网站的 代码片段 部分的所有代码片段中添加了两个新按钮。 现在,您可以使用一个按钮直接添加到 Snippets.app,另一个按钮直接复制到剪贴板,加入 Coda 和 Textmate 按钮。
继续阅读以了解有关它们的更多详细信息,请记住,您可以通过 提交您的代码片段 来帮助代码片段部分发展。
Snippets.app 按钮

一键添加到 Snippets.app
Snippets.app 支持 URL 协议。 也就是说,一旦安装了应用程序,系统上的浏览器就会知道,当输入以“snippets:”开头的 URL(而不是 http://)时,它应该启动(或询问您启动)Snippets.app 并对该 URL 进行操作。
它们的格式为
snippets:add?code=[ENCODED-CODE-HERE]&name=[SNIPPET-NAME]&relatedurl=[REFERENCE-URL]&author=[AUTHOR-NAME]

如果您选中此框,您只会看到它一次。
由于我所有的代码片段都在 <pre> 元素中,因此这是我在每个代码块中添加 Snippets.app 按钮的方式(简化)
$("pre").each(function() {
$preblock = $(this);
$codeblock = $preblock.find("code");
$snippets_link = "snippet:add?code=" + encodeURIComponent($codeblock.text()) + "&name=" + $title + "&relatedurl=" + encodeURIComponent(document.location.href);
$("<a class='snippet-button'>Add to Snippets.app</a>").attr("href",$snippets_link).appendTo($preblock);
});
复制到剪贴板
此按钮由出色的 Zero Clipboard 提供支持。 Flash 10 发布后的一段时间,从网络复制到剪贴板失败了,因为 Flash 10 有些新的安全限制阻止了以前的方法(是的,显然需要 Flash才能使此功能正常工作)。 Zero Clipboard 加强了它并以某种方式解决了这个问题。

一键复制到剪贴板
这里的一个特殊挑战是,我正在使用悬停技术来显示每个按钮的“工具提示”文本。 在其他三个按钮上,我做了一个简单的事情,即在悬停时将一个 span 附加到锚点链接,并在悬停回调中将其删除
$(".snippet-button").hover(function() {
$el = $(this);
$el.append("<span>" + $el.text() + "</span>");
}, function() {
$(this).find("span").remove();
});
span 使用 CSS 进行样式设置和定位。
问题是,Zero Clipboard 通过在按钮顶部定位一个完全透明的 flash 嵌入来工作。 这意味着当鼠标移到该区域时,不会触发传统的悬停事件。 幸运的是,Zero Clipboard 提供了事件侦听器,您可以让它们为您触发回调函数。 请参阅最后两行
ZeroClipboard.setMoviePath( '/path/to/ZeroClipboard.swf' );
$(".copy-clip").each(function(i) {
clip = new ZeroClipboard.Client();
$el = $(this);
$parent = $el.parent();
clip.glue($el[0], $parent[0]);
txt = $el.parent().find("code").text();
clip.setText(txt);
clip.addEventListener('complete', function(client, text) {
// provide some user feedback of success
});
clip.addEventListener('mouseOver', copyMouseOver);
clip.addEventListener('mouseOut', copyMouseOut);
});
这两个函数 copyMouseOver 和 copyMouseOut 用于执行其他按钮使用的相同 span 应用和删除操作。 剩下的一个棘手的事情是,这些函数需要知道要处理哪个父元素,在单个页面上有多个代码片段的情况下。 幸运的是,它们会自动将对象传递给函数,该函数加载了有关该元素的信息,包括 ID,我使用它来指定我们正在谈论哪个代码片段按钮
function copyMouseOver(passed) {
$("#copy-" + passed.id).append("<span>Copy to Clipboard</span>");
};
我想确保在成功复制到剪贴板时有用户反馈,因此您会注意到,在成功复制后,剪贴板本身会快速淡出并再次淡入。 有点微妙,但我认为它相当令人满意。
Coda 和 TextMate
这里没有什么变化。 我在 以前的教程 中介绍了如何添加 Coda 按钮。 David Walsh 介绍了 TextMate 按钮,这需要一些花哨的服务器端操作。
看起来工作正常?
测试一下,告诉我结果... 我在 Twitter 上听到了一些关于失败的议论,但对我来说,所有按钮看起来都工作正常。 如果您想提交失败报告,请尽量提供有帮助的信息,并说明哪个按钮不起作用,浏览器/版本/平台,以及实际发生了什么。
Macintosh Mac Mac Mac
是的,所有集成都是 Mac 软件。 对此表示歉意,这就是我的风格。 如果有一个支持 URL 协议的 PC 程序,我会检查一下并看看我能做些什么来集成它。 现在,复制到剪贴板的功能仍然很有用。
看起来工作正常。 至少复制到剪贴板部分。 我还没有成为 Mac 用户... 我考虑了几年,但我很难想象要重新购买所有程序。
我认为应该等到下次升级时,升级会涉及重新购买程序。 慢慢地在 Mac 和 Windows 之间过渡。
如果并非所有程序都来自同一个创建者,那么购买一台 Mac 并使用 Boot Camp 在操作系统之间切换,并使用 VM-ware 或 Parallels 轻松实现。 然后在 Windows 中安装 Win 应用程序,在 Mac OS X 中安装 Mac 应用程序。
这就是我进行过渡的方式。 8 个月后,所有内容都拥有了 Mac 版本。 有些应用程序我甚至没有升级,而是使用了 Mac 上更好的开源替代方案。
—
我知道这个成功故事可能不适用于所有人。 无论如何,这对我有用 :-)
像 Adobe 这样的公司会允许您将许可证从一个操作系统转移到另一个操作系统。 他们通常会要求您将 CD 发送给他们,但我已经做过几次(专门针对 Adobe),而且没有遇到问题。
至少值得调查一下。 一旦您切换,您会想知道自己如何在 PC 上坚持这么长时间。
我希望我的操作系统是 Mac Os X,这样我就可以从这些有用的工具中获益。
哇,非常感谢 - 代码片段支持很棒!
很棒的文章 Chris!
我特别喜欢你对代码片段集成的分解。 代码片段已迅速成为我最喜欢的代码片段应用程序,它们最近更新的“在 Pastie 上分享”功能为我敲定了最后一锤 :P
有了这些新的更新,您的代码片段库变得更加有用,因此感谢您为此付出的努力,以及您所有精彩的文章!
我一定会去 CMS X 请你喝啤酒 ;)
干杯!
Chris
代码片段应用程序究竟如何帮助我? 它是否与其他应用程序集成,或者我需要在编码时同时打开它? 我无法想到为什么我需要它,除了在离线时访问代码片段资源之外。
是的,您可以在服务菜单中启用它,然后它将提供“从选择添加代码片段”选项,此外,分享选项也很重要,因为我经常在 Pastie 和其他代码片段分享服务上粘贴代码。 此外,顶部菜单栏可以快速访问您的代码片段等。
我想这取决于您的工作流程和编码方式。 对我个人而言,我的代码片段是一种非常宝贵的资源,因此,拥有一个可以管理这些资源的应用程序与拥有一个好的字体管理器一样宝贵。
在稳定版本发布之前它是免费的,因此不妨尝试一下,看看它是否适合您 ;)
您必须迎合大众。
检查 Vista Firefox,没有变化。
我在 PC Chrome 上没有看到任何东西。
太棒了! 我刚在两天前下载了这个应用程序,很高兴看到我可以轻松地添加到该应用程序中。 Chris,你太棒了。
我一直使用“复制到剪贴板”按钮,它很棒,但无法使用复制到 Snippets.app 的功能,因为,好吧,我不知道 Snippets(我一直使用另一个应用程序来执行此操作,我现在要弃用它,并切换到 Snippets)。
作为一名长期(主要是印刷)设计师,我刚刚开始学习编码,并且对此感到非常兴奋。CSS-Tricks 代码片段库非常有用,这个小按钮将使使用它变得更加容易。
谢谢!
看起来你采纳了我的建议。 http://twitter.com/snippetsapp/status/9295696311
感谢你的倾听!
它总是更适合 Mac 用户。
我们感觉被 Visual Studio 排除在外。
无论如何,谢谢。
我在将鼠标悬停在复制到剪贴板图标上时,没有看到任何文本。只有图标周围的橙色框。其他图标显示文本,但那个图标却没有。
在 Vista 上使用 FF 3.6。
太棒了!
在 XP 上使用 FF 3.6 - 代码片段中间有一个大框。大概是复制/粘贴?但是它很大。(比如,50px x 50px)
在 Google Chrome 中不显示。
克里斯,你又做到了。现在,能不能也为我们 Windows 用户做点什么呢。
TextWrangler 有代码片段选项吗?
我只是想知道。
嗨,我在阅读你的网站,顺便说一下,非常有趣,发现当有多个代码片段时,“复制到剪贴板”动画是在最后一个代码片段上执行的。
如果为每个 pre 标签添加一个 id 号属性,那么你可以为每个代码片段制作动画……
clip.addEventListener('complete', function(client, text) {
$("pre#pre-"+$(client).attr('id')).animate({opacity: 0.25}, 200, function() { $(this).animate({opacity: 1}) }) });
干杯
确实,这个功能坏了,这个方法非常有效,谢谢。
感谢你的分享,非常有趣,我看到了自己在未来的应用程序中使用复制到剪贴板功能的可能性。
“Zero Clipboard 进行了升级,并以某种方式修复了它。”
如果你想知道…… Flash 10 添加了一个安全功能,即剪贴板操作只能由用户启动的操作(例如点击)执行。添加此功能是为了阻止窃取剪贴板信息的脚本。
所有其他基于 Flash 的剪贴板脚本都使用一个不可见的 Flash 文件来执行实际的复制操作,其余部分都是 JavaScript。新的安全限制阻止了这些脚本的工作,因为用户没有点击 Flash 电影来进行复制。ZeroClipboard 通过在元素上放置一个不可见的 Flash 电影来解决这个问题。因此,你实际上确实点击了 Flash 电影,即使它不可见。:)