我已更改默认打开应用程序.webloc
文件到 Firefox(使用RC默认应用,很不错的工具包,就是这样),一切都很好,除了一点奇怪。如果我.webloc
使用脚本创建一个(我使用的是改编自这一个用于创建可通过聚光灯搜索的书签),然后它会在 Firefox 中打开为一些无样式的 XML(带有“此 XML 文件似乎没有任何与之关联的样式信息。文档树显示在下面”标题)。
现在奇怪的是:如果我将一个 URL 从 Firefox URL 栏拖到桌面上,我会得到一个.webloc
文件,该文件可以通过 Firefox 毫无问题地打开 - 但是当我查看内容时,它完全相同到我用脚本创建的文件。这肯定和文件创建者有关 - 如果我打开 Firefox 创建的.webloc
文件,然后从文本编辑器保存它,它就不再起作用了。
那么到底发生了什么?为什么两个相同的 XML 代码会根据其创建方式而以不同的方式打开?是否有我可以更改的神奇方法?
作为参考,下面是我脚本创建的文件的内容.webloc
(我也会放 Firefox 创建的文件,但是由于它完全相同(我用 diff 检查过)所以没有意义):
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>URL</key>
<string>http://www.spacetelescope.org/</string>
</dict>
</plist>
答案1
虽然这两个 webloc 文件看起来一样,但实际上却不一样。当你将 URL 拖到桌面时,系统会创建一个带有隐藏资源分叉。您可以使用终端中的 derez 命令显示文件的资源分支:
derez /Users/<User Directory>/Desktop/ESA-Hubble.webloc
对于您的示例 URL,资源分支是:
data 'drag' (128) {
$"0000 0001 0000 0000 0000 0000 0000 0003" /* ................ */
$"5445 5854 0000 0100 0000 0000 0000 0000" /* TEXT............ */
$"7572 6C20 0000 0100 0000 0000 0000 0000" /* url ............ */
$"7572 6C6E 0000 0100 0000 0000 0000 0000" /* urln............ */
};
data 'url ' (256) {
$"6874 7470 3A2F 2F77 7777 2E73 7061 6365" /* http://www.space */
$"7465 6C65 7363 6F70 652E 6F72 672F" /* telescope.org/ */
};
data 'TEXT' (256) {
$"6874 7470 3A2F 2F77 7777 2E73 7061 6365" /* http://www.space */
$"7465 6C65 7363 6F70 652E 6F72 672F" /* telescope.org/ */
};
data 'urln' (256) {
$"4553 412F 4875 6262 6C65" /* ESA/Hubble */
};
在早期的 OS X 中,webloc 文件只是带有资源分支信息的空文件。在某个时候,webloc 文件被“现代化”,以包含属性列表数据,但资源分支信息并没有被删除。
这意味着某些程序对 weblocs 的支持可能不完整,即有时使用属性列表,有时使用资源分支。
也许可以向 Firefox 提交一个错误,请求支持基于属性列表的 webloc?