safari浏览器怎么用右键怎么才能添加查看元素

→ iphone5s浏览器如何添加收藏夹
iphone5s浏览器如何添加收藏夹
出处: 作者:LX 日期: 9:52:19 人气: 0
safari浏览器是在中仅次于谷歌浏览器的高品质浏览器,这款浏览器如何加收藏夹来收藏我们喜欢的网站呢?赶紧来看看吧!苹果iOS设备内置了非常受欢迎的Safari浏览器,通常iPhone与iPad用户均是通过Safari来上网,浏览网页的。由于iPhone设备在浏览器中输入教程的网址会非常不便,因此我们经常会借助Safari书签功能,将常用的网址添加进去,方便下次快速找到。对于很多对Safari浏览器不是很熟悉的果粉用户来说,经常会碰到不知道Safari怎么添加书签,今天百事网小编手中的iPhone 5s为例,为大家详细介绍下iOS7设备Safari添加书签方法。Safari添加书签方法步骤如下:1、首先打开iPhone手机中的Safari浏览器,如下图所示:打开Safari浏览器2、打开Safari浏览器后,我们可以通过搜索或者输入自己需要加入Safari书签的网站,将其打开。比如笔者需要将电脑百事网手机版()加入Safari书签,那么首先我们需要打开该网站,然后点击底部操作菜单中的“选项”图标,如下图所示:点击Safari底部的选项图标3、之后会弹出可以操作的相关选项,这里我们选择底部最左侧的“书签”,如下图所示:选择“书签”操作选项4、然后我们进入的就是将百事网手机版加入Safari书签编辑界面,可以更改名称与网址,一般默认即可,然后点击底部右下脚的“完成”即可,成功将百事网手机办网址加入Safari书签了,如下图所示:Safari书签编辑界面5、至此Safari添加书签操作就完成了,那么后期我们要如何找到自己收藏过的书签呢?方法也很简单,在任何网页下,只要点击Safari浏览器的底部“书签”图标,即可打开书签,如下图所示:点击底部Safari浏览器的书签按钮6、打开Safari书签后,我们选择进入“个人收藏”,然后在里边即可找到我们之前添加过书签的网址了,如下图所示:Safari添加书签方法Safari浏览器将自己喜欢的网址添加书签就是这么简单,如果您对Safari怎么添加书签教程,还有疑问的话,请在底部评论中提出一起讨论吧。
备案 鄂ICP备号-1新浪广告共享计划>
广告共享计划
苹果Safari&5浏览器查看网页上图片EXIF信息的扩展插件
“EXIF”(Exchangeable image file
format)是可交换图像文件的缩写,是专门为数码相机的照片设定的,可以记录数码照片的属性信息和拍摄数据。”比如光圈、快门、相机型号、拍摄时间等
等,估计稍微接触摄影的人都有查看照片 EXIF 信息的需求。以前介绍过
。不过这两种方法都只能查看已经储存在苹果电脑本地硬盘的照片,如果在网上看到图片,直接在
Safari 浏览器里查看 EXIF 属性多方便?下面就介绍苹果 Safari 5 浏览器查看网页上图片 EXIF
信息的扩展插件“ExifExt”
安装完扩展插件后,在苹果 Safari 5 浏览器里右击网页上的图片,右键菜单里有查看 EXIF 信息的选项
在苹果Safari 5浏览器查看网页上图片EXIF信息
&&&&ExifExt
扩展插件下载
&&&&苹果Safari
5浏览器默认是不开启插件扩展功能的,启用苹果Safari 5浏览器扩展的方法,请看
& 欢迎订阅本博客,关注苹果,每天更新
& & & & & & &
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。了解 Safari 5.1 的 250 多项创新功能。
VoiceOver 屏幕阅读器
Mac OS X 系统中的 Safari 支持内置 Apple VoiceOver 屏幕阅读器。VoiceOver 可以读出文本以及网站链接等屏幕显示内容。通过 VoiceOver 你完全可以用键盘控制电脑,而无需使用鼠标。
Safari 支持 Accessible Rich Internet Applications (ARIA)。ARIA 标准帮助网络开发人员开发更适合残障人士使用的动态页面。有了 ARIA,采用 AJAX 与 JavaScript 等先进技术的网站,可以借助辅助技术轻松实现交互操作。
增强的键盘导航功能
借助 Safari 中增强的键盘导航选项,不需使用鼠标也可以浏览网页。按下 Tab 键,Safari 即会跳到下一个密码输入栏、弹出菜单或输入栏。你还可以使用更高级的键盘控制功能:按下 Option 键的同时连续点按 Tab 键,Safari 会依次选中页面中的所有链接,在任何时候按下回车键,Safari 便会打开当前选中的链接,让你只需按键几下既可完成全部“点选”操作。
全页面缩放
使用键盘快捷键、Multi-Touch 手势或缩放工具栏按钮缩放网页内容,以获得更悦目的浏览体验。在缩放图像的同时,文本依旧清晰,同时保持页面布局不变。若要在工具栏中添加文本缩放按钮,只需从“显示”菜单中选择“定制工具栏”,然后将“缩放”按钮移至工具栏即可。
仅缩放文本
当你要详细浏览网页时,可选择仅缩放文本。
HTML5 视频的隐藏式字幕
Safari 现可带来无障碍的视频观看体验。如果一段嵌入网页的视频使用 HTML5 &video& 标签并包含隐藏式字幕,点击视频控制键中的 “CC” 按钮就可显示这种字幕。
自定义样式表
应用自定义样式表,你可以下载或自己创建,并设置默认字体、字体大小、颜色和对比度,从而让你喜爱的网站更易于阅读。
设置最小显示字体
如果你感到某些网站显示的字体过小而无法浏览(比如,照片标题或小号印刷字体),Safari 可以增大字体,获得醒目的显示效果。只需在 Safari “偏好设置”的“高级”面板中设定字体最小显示尺寸即可。
先进网页技术
支持下一代标准
采用最新的创新网络标准,Safari 继续引领潮流,使下一代网络体验成为可能。支持 HTML5 媒体标签、CSS 动画、CSS 特效,设计师借助具备原生支持的网络标准创建丰富互动的网络程序。作为堪称标准规格的浏览器,Safari 能够按照设计初衷,呈现现在及未来的网页。
全屏网页浏览
有了新的全屏 JavaScript API,开发人员无需插件即可创造逼真的网页体验。
CSS 动画的开放标准将网站互动性提升到全新层次。网站设计师可以缩放、旋转、淡入淡出并扭曲网页上的元素,打造眩目网站。Safari 是第一个支持 CSS 动画的浏览器。
该技术由 Safari 率先应用,开发人员可以运用 CSS 特效为网站图片添加令人惊叹的渐变、精准遮罩效果及倒影特效,只需几行命令就可搞定。
CSS3 网页字体
CSS3 的网页字体可以让网页设计师能够用他们想用的字体来创作惊艳的网页,再不必受“网页安全字体”的限制。Safari 是第一款可辨识网页自定义字体,并可以下载所需字体的浏览器。
CSS3 自动连字符
Safari 支持 CSS3 自动连字符,开发人员可借此创造更出色的阅读体验。
CSS3 竖排文本
开发人员可在网页中使用从上向下的文字版式,为中文、日文等使用竖排版式的语言网页带来更大自由度。
CSS3 文本重点显示
通过文字高亮显示性,网页上会显示出东亚语言中常见的着重号。
CSS Canvas
通过 CSS Canvas,网页设计师能够在可放置 CSS 图像的任意位置应用 Canvas 元素。Safari 是首个支持 CSS Canvas 的网页浏览器。
HTML5 媒体文件支持
现在,网站可以像显示图片一样轻松呈现丰富、互动的媒体文件。作为首个支持 HTML5 音频与视频标签的浏览器,Safari 可以帮助开发人员创建富媒体网站,而无需单独的插件。同时,媒体标签提供丰富的脚本 API,开发人员可以创建功能强大的新控件以及与页面样式相匹配的控件。
支持 HTML5 视频全屏显示
现在,使用 HTML5 &video& 标签嵌入网页的视频可以全屏模式观看。现在,你可以用全屏模式欣赏网页上使用 HTML5 标签的视频。全屏模式让标准模式视频也带来顶级的观赏感受。
HTML5 视频的隐藏式字幕
Safari 支持 HTML5 视频中的隐藏式字幕。如果网页中的 HTML5 视频含有隐藏式字幕,点击视频控制键中的 “CC” 按钮就可将其显示出来。
HTML5 Canvas
HTML Canvas 最初由 Apple 为 Mac OS X Dashboard 设计,它允许网页设计师在 HTML 中划定一个区域,并通过 JavaScript 建立动态化样式。Safari 是首个支持 HTML Canvas 的网页浏览器,目前大多数的主流浏览器均支持该标准。
HTML5 Canvas 图形加速功能
有了 Lion 的 Safari,网页上的 HTML5 Canvas 元素将充分利用硬件加速,赋予显示于浏览器中的互动图形以更快的性能。
HTML5 离线支持
现在,网站开发人员可以开发离线应用软件。有了 HTML5 的离线支持,你可以随时快速取用存储于电脑中的网页应用软件。同时,网站开发人员也可选择将应用软件数据保存在系统中,你可以随时提取所需信息。你可以将应用软件与数据按熟悉的 cookie 格式存储在类似于传统 SQL 数据库中,作为应用软件缓存或 熟悉的 cookie 格式。
媒体文件缓存
Safari 可为使用 HTML5 应用缓存的网页应用软件存储音频和视频数据,可提供离线回放,在网络链接速度较慢时,也能带来更好的媒体性能。
HTML5 地理定位
由于 Safari 支持 HTML5 地理定位,你可选择与特定的网站分享你的所在位置,这些网站则会将其用于提供地图或附近商业等相关的信息。
HTML5 的区段元素
支持 article、aside、footer、header、hgroup、nav 和 section 元素,让开发人员可用语义标记来创造先进的网页设计。
HTML5 AJAX History
支持 HTML5 AJAX History 让网页开发人员可以建立互动的 AJAX 应用软件,它可以动态更新,同时仍能与 Safari 中向前和向后的导航按钮流畅配合使用。
EventSource
Safari 支持来自服务器的实时推送通知。现在,使用 EventSource 的网页应用软件可以更快、更稳定地从网站服务器接收通讯信息。
Safari 支持 WebSocket,通过快速、双向的通信连接与网络应用软件服务器相连,这让聊天等在线活动的速度更快,需要的带宽更少。
HTML5 的可拖动属性
Safari 让开发人员可轻松创建拥有拖放界面的网页,用以处理照片或图像等内容。
HTML5 表单验证
Safari 可以检查在线表单中的信息,从而在发送到网站服务器之前核对格式是否正确。如果输入栏中信息有误,Safari 会立刻通知你。
HTML5 沙箱属性
Safari 支持 iframe 元素的沙箱属性,它可以限制 iframe 中的内容操作。防止 iframe 运行脚本或载入插件,让它们无法传送有害或欺诈性的内容,使 iframe 更安全。
HTML5 Ruby
Safari 可在网页的主要文字旁边显示注释信息,允许在使用中文、日文和韩文的网页中标注发音注释。
支持 HTML 4.01
Safari 支持 HTML 4.01,即定义网页文件结构与布局的编程语言。
有了数学标记语言(MathML)支持,Safari 让开发人员不需使用图像文件即可在网页中嵌入数学注释。
Safari 支持网络开放字体格式(WOFF),让网页设计师和开发人员可为网站选择更丰富的字体。
JavaScript 支持
Safari 支持 ECMA 262 第 5 版,即 JavaScript 标准的最新版本。JavaScript 支持众多网页上的动态功能,互动的 AJAX 应用的兴起过程中发挥了关键作用。
由于 Safari 原生支持 JavaScript Object Notation (JSON),因此它可让使用 JSON 的网络应用软件运行得更快、更安全。
WebKit 是 Apple 推出的开源呈现引擎,为 iPad、iPhone 和 iPod touch 中的 Safari 以及 Mac 和 Windows 电脑中的 Safari 提供动力。WebKit 提供卓越的性能并支持广泛的标准。同时,由于其采用开放源代码,开发人员可以检查 WebKit 代码并将其共享。
兼容 Acid 2
由网络标准项目组织设计的 Acid 测试,旨在确定网络浏览器是否与新兴的网络标准相兼容。Acid 2 测试浏览器与 HTML、CSS 与 PNG 标准中新功能的兼容性。Safari 于 2005 年 10 月 27 日通过 Acid 2 测试,比其它主流浏览器领先两年半,奠定了业界的崭新标准。
兼容 Acid 3
Safari 是首个通过 Acid 3 测试的浏览器。新一代的动态网站经常使用 CSS、Javascript、XML 和 SVC 等网络标准。Acid 3 可以测试浏览器呈现这类动态网页的能力。
Nitro JavaScript 引擎
Nitro JavaScript 引擎是一种先进的字节码 JavaScript 引擎,它让网页浏览速度更快,Mac、PC 和 iOS 设备上的 Safari 都使用它。
DNS 预读取
在你浏览网页的过程中,Safari 会发现你访问页面上的链接,并查找其地址:这项技术叫做域名系统 (DNS) 预读取。如果你点击了其中一个链接,Safari 可快速载入网页,让你省下等待的时间用来浏览。
先进的页面缓存技术
Safari 将你访问的网页存储在缓存中,可增加已浏览的页面的读取速度。Safari 还可将更多的网页类型加入缓存,让你返回这些页面时载入更加迅速。
硬件加速功能
Safari 支持 Mac 和 PC 上的硬件加速功能。通过此功能,Safari 可以利用图形处理器来显示计算密集型图形和动画,因此 HTML5 和 CSS3 等标准可在浏览器中流畅地展现视效丰富的互动媒体内容。
Windows 图形功能提升
Safari 5.1 改进了 Windows 中的动画性能和 CSS3 特效,运用硬件加速功能,为浏览器带来更快、更流畅的呈现效果。
Safari 可提前载入浏览网页所需的文件、脚本和样式信息,因此在你需要时已经准备就绪。
SVG 1.1 支持
借助 Safari 的可缩放矢量图形 (SVG) 支持,网页开发人员可以快速创建字体、图形元素及动画,无论尺寸大小均可呈现惊人效果。比如,地图网站通常根据你的方位与目的地使用 SVG 绘制驾驶路线图。
ICC 色彩配置支持
Safari 使用高级色彩管理技术,呈现色彩丰富、精确的网页图像。事实上,Safari 是首个支持国际色彩联盟 (ICC) 配置文件的浏览器,而且从开发最初时即采用该项技术,因此浏览器中的照片和图像显示效果与原图一样精彩。
插件是扩展浏览器功能的加载程序。由于支持标准的 Netscape 插件架构,Safari 与主流网络插件广泛兼容,包括:Flash、Shockwave 和 QuickTime。
可编脚本插件
通过 Safari 的可编脚本插件支持,开发人员可以设计开发与网页标准元素互动的插件。比如,个性化汽车外观的插件。当你添加或移除选项时,脚本化插件可相应更新车标价。
借助 Safari 的 Java 支持,享受网页中 Java applets 应用软件的乐趣。
XML 1.0 支持
可扩展标记语言 (XML) 是开发、管理并共享结构化数据的业界主流开放标准。由于 Safari 中内置原生 XML 支持,JavaScript 程序可高效读取 XML 数据文件。
LiveConnect 支持
Safari 支持 LiveConnect 以确保与主流企业网络应用软件的兼容性。通过 LiveConnect 功能,Java 与 JavaScript 完美协作提供更为顺畅的浏览体验。
Window.onError 让开发人员更易发现 JavaScript 内的错误。开发人员可以向用户提供一条可自定义的消息,当用户在其网站上遇到错误时呈现,window.onError 也能向服务器报告 JavaScript 错误,因此,开发人员可使用这些错误数据来调整其代码。
格式化 XML 文件
当开发人员下载了无格式的 XML 文件时,Safari 能以清晰的文件树格式显示信息,更易阅读。
书签资料库
通过 Safari 提供的 iTunes 风格界面,你可以查看、创建并管理个人书签。书签资料库按自定义书签、你的浏览历史记录、地址簿连接、Bonjour 连接与 RSS 文件等收藏文件夹分类。点击书签栏左侧的“书签簿”图标即可访问资料库。
Cover Flow
借助 Cover Flow,你可以像在 iTunes 中浏览唱片封面一样轻松地浏览网站。Cover Flow 将书签和历史记录显示为大尺寸的预览图,这样,你就可以立刻选择要访问的网站。
拖放整理书签
通过向右或向左拖动书签,轻松整理书签栏中的书签。当你移动书签时,其他书签会滑开为你正移动的书签腾出空间。
拖放创建或删除书签
通过 Safari,你可以创建或删除书签,只需简单的拖放即可实现。当你发现一个喜欢的网站,将网站图标移至书签栏创建新书签。如果你不再需要某个书签,将其拖出书签栏,它立刻销声匿迹了。
历史记录浏览
在历史记录浏览中仔细查看浏览历史记录。搜索以前访问的网站,将网页移至你的书签中,并清除单个的浏览项。Safari 运用 Cover Flow 显示你的历史记录,这样,你可以像在 iTunes 中浏览唱片封面一样轻松地浏览搜索结果。
在 Safari 中迅速找到书签,你甚至不需记住网站名,Safari 能搜索全部书签,查找匹配的 URL、网站名,甚至是网站内容,找到你正在寻觅的书签。
书签文件夹
在定制文件夹中整理你的书签,比如,新闻、资源、网络、照片或博客等。同时,你可以在书签收藏中添加、命名并整理这些分类,直接拖拽书签至一个文件夹中,就可以管理你的资料库。
完美整合的书签栏
Safari 浏览窗口内嵌雅致的书签栏,因此,你最为常用的书签总是触手可及,而不会给屏幕带来丝毫的凌乱感。
书签自动点击
Safari 提供自动打开书签文件夹中书签的绝佳方式,它们会在各自独立的标签中打开。实际上,Safari 是首个提供自动点击书签功能的浏览器。想在早晨获得收藏网站的最新新闻,通过自动点击功能,只需轻轻一点即可以不同的标签中打开多个页面。
当不同标签开启不同网站时,有种快速的办法能为它们创建一个书签。在 Safari 的书签“选项”中选择“为这些标签添加书签”,即可为它们建立一个书签。因为有“自动点击”功能。所以点击一下,就可以在不同标签中重新打开每个网站。
定制书签命名
通过定制名称让书签名简单易记。你可以给书签取好记的名称,而无需使用默认的网站名称,因为默认名称往往冗长难记。Safari 会在每次添加书签时,以便捷的方式提示你为其选择名称和位置。
Bonjour 书签
使用 Safari,你可以从个人书签资料库中的 Bonjour 分类访问并管理你局域网上的打印机和电脑,无需寻找并输入复杂的网址。
从“文件”菜单中选择“导入书签”,可以将 Firefox 与 Internet Explorer 的书签导入 Safari。
轻松转移并备份书签。从“文件”菜单中选择“导出书签”,Safari 会将书签保存在一个 HTML 中,你可以轻松存档,或是在其他电脑或浏览器中打开。
地址簿书签
在 Mac OS X 中,当你将喜爱的餐馆或朋友的博客地址链接添加到地址簿时,Safari 可以自动将其列入书签资料库的地址分类中,此项功能为 Safari 独有。
浏览与导航
阅读列表让你可以保存网页供日后阅读和浏览。轻点书签栏左侧的眼镜图标即可在 Safari 窗口中显示或隐藏你的阅读列表。
轻点智能地址栏中的 “+” 按钮,即可将当前页面加入你的阅读列表。当阅读列表打开时,轻点“添加页面”按钮即可。在浏览网页时,按住 Shift 键并轻点页面上的链接,即可将其加入阅读列表,即使阅读列表处于隐藏状态。
你的阅读列表会显示列表中每个网页的标题所在网站以及前几行内容的预览。如果你是通过 Shift 键轻点短链接将其加入阅读列表的,那么阅读列表将显示其标题和链接网站。
当你读完了一个页面,不希望将其继续保留在阅读列表中时,只需在列表的这个项目上悬停鼠标,就会出现一个 “X” 按钮,点击这个按钮即可删除项目。轻点“清除全部”按钮即可删除列表中的所有项目。
轻点阅读列表顶端的“全部”和“未读”按钮,可在查看阅读列表中的全部项目和未读项目间切换。
要浏览你的阅读列表,可使用滚动条或 Multi-Touch 滚动。拖动右侧边缘,可拉宽或拉窄阅读列表。
与阅读器整合
当你选中阅读列表中的一篇文章时,Safari 会在智能地址栏显示一个阅读器按钮。轻点该按钮,文章内容即刻呈现,不受任何干扰。你还可以缩放、用 Mail 发送或在文章底部悬停鼠标,通过点击顶部显示面板中的打印机图标来打印文章。
自动阅读器
如果你正在使用阅读器查看阅读列表中的项目,那么当你选中列表中的另一项目时,Safari 将自动用阅读器打开新项目。
阅读器与 Mac 整合
在 Lion 中,你可在 Mail 和其他应用软件中向阅读列表添加页面。如果有人给你发送了链接,而你希望稍候阅读,可使用鼠标右键点按或按住 Control 并轻点该链接,选择“添加到阅读列表”。
全新进程架构
Safari 的全新进程架构让浏览更稳定,反应更灵敏。一个进程处理来自网络的所有内容,而另一个进程则处理与浏览器界面的交互,例如创建书签或搜索历史记录。因此,一个页面没有响应不会影响浏览器,你可以持续浏览,而无需重启 Safari。
Safari 阅读器
在你浏览网页时,Safari 会检测你访问的页面是否含有文章。点击智能地址栏中的阅读器按钮,文章就会在雅致的画面中出现,完全没有多余的内容令你分心。
有了 Safari 阅读器,你不必点击多个网页就可到达长篇文章的结尾。Safari 阅读器可完整地显示文章,还有滚动条帮你轻松、连贯地阅读。
点一下以电邮发送
Safari 阅读器可让你轻松分享文章。在 Safari 阅读器中,点击顶部显示面板的信封图标,就可通过 Mail 发送出这篇文章。Mail 邮件可保存整洁、连贯的文字布局,并在邮件顶端列出文章的链接。
在 Safari 阅读器中,通过点击顶部显示面板内的放大和缩小图标,你还可改变文字的大小。文字的大小改变以后,设置会得到保存,留待你下次用 Safari 阅读器阅读时使用。
用 Safari 阅读器浏览文章时,点击顶部显示面板中的打印机图标,就可以多页相连、且同样整洁的布局打印出文章,令打印成品内容连贯、易于阅读。
Safari 自动识别你最喜爱的网站,并将其显示为效果惊人的图形预览墙。要访问某个首选网站,只需点击任意一个网站预览图即可。当你浏览网页时,Safari 会根据访问次数和周期确定你最感兴趣的网站。这样,你在网上冲浪并发现新网站时,你的首选网站会随之改变以适应你日益提升的品位。
定制 Top Sites 数目
想设置 Safari 在 Top Sites 页面上显示网站的数量,点击 Top Sites “编辑”按钮,然后选择右下角的小、中、大,分别显示 24、12、6 个网站缩略图。
锁定 Top Sites
想按自己的方式整理你的首选网站,点击“编辑”按钮,同时在 Top Sites 的网格表中将网站缩略图移至任何位置。你可以点击显示在该网站上方的图钉图标将网站锁定到指定位置。
Top Sites:最新动态新闻
当某个首选网站更新时,你可以迅速获知最新信息。只需找到网站右上角的星形图标,即可获知哪些网站拥有更新内容。
搜索所有历史记录
使用“搜索所有历史记录”,你可以快速查找曾经访问过的页面。要查找某个页面,只需在 Top Sites 的搜索历史记录栏键入搜索信息,无需记住页面标题或复杂的 URL,搜索显示在页面任何位置的文字即可找到相关页面。Safari 使用 Cover Flow 显示搜索结果,因此你可以翻阅大型的图形预览来快速选取所寻找的站点。
按日期搜索历史记录
在你使用 Cover Flow 和“搜索所有历史记录”时,全新的日期指示符可帮你整理历史记录,并根据浏览时间来查找网页。
Top Sites 历史记录按钮
每个显示区顶部都有一个按钮,你可用它在 Top Sites 和搜索所有历史记录之间轻松切换。
标签页浏览
带标签的浏览不愧为可同时查看多个网站而不会造成桌面凌乱的绝佳方法,它可以使你通过单个窗口查看多个网站并在其中进行切换。要打开一个新标签,只需在标题栏单击“新标签”按钮即可。
Safari 拥有方便、易用的标签界面,让你可在一个窗口中浏览多个网站。Safari 偏好设置的标签面板中的一项设置让你可用它在标签页中打开新网页,从而保持桌面整洁。
撤销关闭标签页
如果无意中关掉了一个 Safari 标签页,你还可让它轻松还原。只需选择“编辑”菜单中的“撤销关闭标签”选项,或使用快捷键 Command + Z (或 Windows 上的 Control + Z) 重新打开同一标签页。
可移动标签
移动式标签可按你想要的方式整理你的网站。向左或向右拖动标签即可整理标签。将一个标签拖出窗口创建一个新窗口,或是将标签从一个窗口移至另一个窗口合并标签。
用一组标签打开新窗口
在 Safari 中,无论你何时打开一个新窗口,你都可以让 Safari 为你打开一组标签,其中包括你每次浏览时想要访问的网站。
智能地址栏
快速轻松输入 Web 地址。只要你开始在地址栏输入地址,Safari 会立即自动提供最有可能匹配的建议这项功能被称作 Top Hit,并高亮显示。只需按下 Enter 键,即可连接站点。如果 Top Hit 不是你要访问的站点,请查看 Safari 根据所建书签或浏览历史记录相关建议的列表,从中选择你想要访问的站点。
自动填充网站地址
让 Safari 为你自动补全网站地址。随着你在智能地址栏内输入网址,Safari 会使用你的书签和浏览历史来预测目标网站,然后为你填充完整的网址。
智能自动填充
根据历史记录和书签中的网页名称,智能地址栏可以补全你输入的信息,无论你输入网址的哪一部分(不仅限于开头),智能地址栏都可做出相应的提示。
快捷搜索历史记录
你可以直接从智能地址栏进入搜索所有?保持登录。
单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.
在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。
所有提交的信息确保安全。
当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。
单击提交则表示您同意developerWorks
的条款和条件。 .
所有提交的信息确保安全。
developerWorks 社区:
我的概要信息
选择语言:
本文将继续介绍 Apple 为 Safari 扩展开发提供的各种 JavaScript API, 进而讲述 Safari 扩展开发当中所要遇到的各种事件处理 , 从而加深读者对 Safari 扩展开发的了解。
, 软件工程师, IBM
申毅,IBM 中国软件开发中心 WebSphere Portal 部门软件工程师。
, 软件工程师, IBM
邵华,IBM中国软件开发中心 WebSphere Portal 部门软件工程师。目前从事于 WebSphere Portal FVT 的相关工作,对 Linux 及 Web 相关技术较为关注。
, 软件工程师, IBM
张璇,IBM 中国软件开发中心 WebSphere Portal 部门软件工程师。
在前一篇"实战 Safari 扩展开发"中 , 我们简单介绍了什么是 Safari 扩展以及它的主要功能 , 并且动手创建了一个简单的扩展。 但我们尚未涉猎到 Apple 为 Safari
扩展提供的 JavaScript API, 这些特殊的 JavaScript API 让我们能够在扩展中访问 Safari 应用层以及页面内容层从而修改它们。 更为重要的是 , Safari 应用层与页面内容层之间不能直接调用对方的代码 , 我们需要在两者之间进行消息传递并通过代理才能完成这项任务。 本文将为您介绍这些特殊的 JavaScript API 以及 Safari 扩展开发中将要用到的多种多样的事件处理。Safari 扩展 JavaScript API 体系介绍我们在前一篇"实战 Safari 扩展开发"中介绍过 , Safari 扩展其实是由标准 HTML5, JavaScript 和 CSS 组成的 , 但标准 Javascript 自然没有包含如何操纵 Safari 浏览器 , 如何新打开一个 Safari 标签页 , 如何添加一个工具栏按钮 , 如何处理上下文菜单项等等。 这些功能 , 都要通过 Apple 为我们提供的 Safari 扩展 JavaScript API 才能完成。 而这个 Safari 扩展 JavaScript API, 主要分为三大部分 : Safari.Application 和 Safari.Extension, 以及 Safari.Self. 其中 Safari.Self 是个特殊的类 , 用来指代当前运行的对象 , 如果此时是在全局页面中 , 就是指全局页面对象 ; 如果此时是在工具栏按钮中 , 就是指工具栏按钮对象。 另外的 Safari.Application 和 Safari.Extension 比较复杂 , 让我们来对这两者做个对比。从所提供的功能上来对比 Safari.Application 和 Safari.Extension:
Safari.Application 主要负责 Safari 应用本身的相关功能 , 这样我们的扩展就能够用这个 API 来执行 Safari 窗口 / 标签页的开启 / 关闭等功能。
Safari.Extension 主要负责当前扩展的相关功能 , 它主要负责除页面内容之外的其他部分。 例如在当前扩展中添加的扩展工具条 , 工具栏按钮 , 全局页面等。从所适用的场合上来对比 Safari.Application 和 Safari.Extension:图 1 : Safari 应用层与页面内容层
在 Safari 应用层 ( 包括图一中的第 1/2/4 部分 ): 包含对工具条按钮 , 扩展工具条 , 页面标签 , 页面窗口 , 上下文菜单等的处理 , 而相应的代码大多是通过全局页面文件完成的。 在这一层里 , 我们可以使用全功能的 Safari.Application 和 Safari.Extension API, 具体功能咱们稍后再详细介绍。
在页面内容层 ( 包括图一中的第 3 部分 ): 包含修改页面内容的注入 JavaScript 和 CSS. 在这一层里 , 我们不能使用 Safari.Application 相关的 API. 对于 Safari.Extension API, 其中也有部分功能不能在这一层里使用 , 例如其中的 SafariExtensionSettings 和 SafariExtensionSecureSettings 对象。 因此在页面内容层使用 Safari.Extension 时我们要时时注意相应的 API 是否能在这一层使用以及是否与 Safari 应用层上的同名 API 是否有所区别。下面我们来分别看看 Safari.Application 和 Safari.Extension 的对象里具体都包含哪些方法和属性吧 :Safari.ApplicationSafari.Application 让我们能够处理 Safari 窗口和 Safari 标签页 , 并且能够负责工具栏 / 上下文菜单事件的响应事件。
Safari 应用 (SafariApplication) 对象的相关 API:
safari.application.openBrowserWindow() 方法能够在最前面打开一个新的 Safari 窗口。
safari.application.activeBrowserWindow 属性会返回当前激活的 Safari 窗口
safari.application.browserWindows 属性会返回当前所有的 Safari 窗口列表 , 从当前最前面的窗口到放置在最后面的窗口依次为序。
Safari 窗口 (SafariBrowserWindow) 对象的相关 API ( 要获取一个具体的 SafariBrowserWindow 对象实例可以用类似 safari.application.activeBrowserWindow 这样的方法 ):
active() 方法能够将 Safari 窗口放在最前面。
close() 方法能够关闭此 Safari 窗口。
insertTab() 方法能够在当前 Safari 窗口的指定位置插入一个指定的标签页。
openTab() 方法能够在当前 Safari 窗口的指定位置插入一个新的标签页。
activeTab 属性会返回当前窗口中当前激活的标签页。
tabs 属性会返回当前窗口中的所有标签页 , 从左到右为序。
visible 属性会返回当前窗口是否可见。
Safari 标签页 (SafariBrowserTab) 对象的相关 API( 要获取一个具体的 SafariBrowserTab 对象实例可以用类似 safari.application.activeBrowserWindow.activeTab 这样的方法 ):
active() 方法能够前置并激活此标签页。
close() 方法能够关闭此标签页。
browserWindow 属性返回标签页的父窗口。
page 属性返回 SafariWebPageProxy 对象。
title 属性返回标签页的标题。
url 属性返回标签页的 URL.Safari.ExtensionSafari.Extension 让我们能够添加 / 删除工具栏按钮 / 注入 JavaScript 和 CSS.
Safari 扩展 (SafariExtension) 的相关 API:
safari.extension.bars 属性返回一个 SafariExtensionBar 对象的数组 , 其中包含了所有 Safari 窗口的所有工具栏。 我们得到的 SafariExtensionBar 对象有很多实用的方法可供调用 , 例如 hide()/show() 之类方法的修改工具栏的显示状态。
safari.extension.toolbarItems 属性返回一个 SafariExtensionToolbarItem 对象的数组 , 其中包含了所有 Safari 窗口的所有工具栏按钮。 SafariExtensionToolbarItem 对象可用的方法就更多了 , 比如 badge()/image()/lable()/toolTip(). 利用这些方法 , 我们可以根据不同的状态进行修改 , 例如用 badge() 方法在工具栏的 GMail 按钮上更新未读邮件的数量。
safari.extension.globalPage 属性返回当前扩展的唯一的 SafariExtensionGlobalPage 对象 , 使用此它我们就能操作这个全局页面对象了。
safari.extension.baseURI 属性返回当前扩展包的根路径 , 我们可以使用它来访问扩展包里的其他资源文件 , 例如包含的 HTML 文件或者图片文件等。
添加 / 删除注入 JavaScript 以及 CSS 的相关方法 :
safari.extension.addContentScript()
safari.extension.addContentStyleSheet()
safari.extension.removeContentScript()
safari.extension.removeContentStyleSheet()还有几个比较重要的类我们也应该予以关注 , 比如 SafariEvent 和 SafariEventTarget, 这里就不细述了 , 请大家参阅 获得更多信息。Safari 扩展中的事件处理在 Safari 扩展开发中 , 事件处理是不可或缺的一步。 在 Safari 扩展开发指南中 , 将事件处理主要分为了四类 : 命令事件 (Command event), 验证事件 (Validate event), 上下文菜单事件 (Contextmenu event), 消息事件 (Message event).命令事件当我们添加了一个工具栏按钮 , 或者上下文菜单项之后 , 我们需要告诉 Safari 浏览器当用户点击了工具栏按钮 / 上下文菜单项之后需要执行什么功能。 下面我们通过上一篇"实战 Safari 扩展开发"中的 CloseOtherTabs 扩展来回顾一下整个命令事件的处理流程。首先我们在扩展创建器中为新增的工具栏按钮指定的命令事件的字符串为"close-other-tabs", 在 Info.plist 文件也能查看到相关的设置 :清单 1: Info.plist &key&Chrome&/key&
&key&Global Page&/key&
&string&global.html&/string&
&key&Toolbar Items&/key&
&key&Command&/key&
&string&close-other-tabs&/string&
&key&Identifier&/key&
&string&close-other-tabs&/string&
&key&Image&/key&
&string&close.png&/string&
&key&Label&/key&
&string&CloseOtherTabs&/string&
&key&Tool Tip&/key&
&string&Close other tabs except current one&/string&
&/dict&这样当用户在工具栏中点击了这个"关闭其他"按钮之后 , 将触发一个"close-other-tabs"的命令事件。 同样的命令事件也能够通过点击上下文菜单的菜单项来触发。 接下来 , 我们需要告诉 Safari 如何响应这个事件。 响应命令事件可分为两步 , 第一步是在什么地方注册这个命令事件的响应函数 , 第二步则是在相应的地方具体实现这个响应函数。注册响应函数有两种选择 , 可以注册到 Safari 应用上 , 也可以注册到工具栏的父窗口上。safari.application.addEventListener("command",performCommand, false);safari.self.browserWindow.addEventListener("command",performCommand, false);上面的两条语句分别在 Safari 应用及工具栏的父窗口上将 performCommand 响应函数关联上了命令事件。 最后的参数代表的是事件的处理阶段 , 是捕获阶段 , 还是冒泡阶段 , 这里的"false"表明是冒泡阶段。 我们可以看到 , 在上述语句中并没有将 performCommand 响应函数和"close-other-tabs"命令事件直接关联起来 , 而只是简单的将其关联到了"command"事件。 我们需要在 performCommand 响应函数内部来进行判断 , 例如 :清单 2: 命令事件的响应函数 function performCommand(event)
if (mand != "close-other-tabs")
// 如果当前开启的标签页小于 2 则无需执行此函数
if (event.target.browserWindow.tabs.length & 2)
// 关闭当前窗口中除当前标签页之外的其他标签页。
var myTabs = event.target.browserWindow.
var currentTab = event.target.browserWindow.activeT
for (var i = 0; i & myTabs. ++i) {
var tab = myTabs[i];
if (currentTab == tab){
//do nothing for current tab
tab.close();
}在每个响应函数的开头都要先判断一下该命令事件是否发自我们的 CloseOtherTabs 扩展 , 从而避免了误处理其他的命令事件。 这样当用户点击了工具栏的"关闭其他"按钮时 , 会触发一个"close-other-tabs"命令事件 , Safari 浏览器会在所有注册了命令事件的响应函数中依次执行 , 当执行到上述 performCommand 响应函数时发现匹配的命令 ("close-other-tabs") 才会继续执行下去。 接下来的代码我们现在看起来已经十分熟悉了 , 分别是用 SafariBrowserWindow 对象获取当前 Safari 窗口的所有标签页对象 (SafariBrowserTab), 并且依次遍历这些标签页对象从而关闭除当前标签页之外的所有标签页。那么 , 将命令事件注册到 Safari 应用上和注册到工具栏的父窗口有什么区别呢 ? 首先需要注意的是 , 在注入 JavaScript 中不能直接响应命令事件。 如果想要用注入 JavaScript 文件中的方法来响应命令事件 , 还是需要由注册到 Safari 应用或是注册到工具栏父窗口的响应函数 , 通过消息事件和代理才能间接调用定义在注入 JavaScript 中的方法。 那么剩下了的就分为将响应函数是定义在全局文件中或者是工具栏文件中了 , 这两者的区别可以简单的理解为全局范围内或是单窗口范围内。 将响应函数定义在全局文件中的 , 一般都会将命令事件注册在 Safari 应用这一级别 ; 而如果将响应函数定义在工具栏文件中的 , 一般都会将命令事件注册在工具栏的父窗口级别。 通常来说 , 注册到 Safari 应用上并在全局文件中实现响应函数更有效率些 , 响应函数之后存在一份实例。 而注册到工具栏父窗口级别则会有多份实例 , 每个 Safari 窗口都有一份自己特有的实例 , 互不干涉。 在我们的 CloseOtherTabs 扩展中 , 就是在全局文件中注册了命令事件并提供响应函数。验证事件验证事件和命令事件有些像 , 而且也紧密联系在一起。 验证事件同样可以注册在 Safari 应用级别 , 也可以注册在工具栏父窗口级别。 验证事件并不是通过用户点击工具栏按钮之类的操作来触发的 , 而是由 Safari 控制的 , 在适当的时机触发来完成验证功能。 具体什么是验证功能呢 ? 举个例子来说吧 , 在我们的 CloseOtherTabs 扩展中我们在工具栏里提供了一个"关闭其他"的按钮 , 其实这个按钮不应该在所有情况下都允许用户点击 , 如果当前 Safari 窗口只有 1 个标签页就应该将这个按钮设置为禁用状态 , 因为这时候允许用户点击这个按钮来关闭不存在的其他标签页是没有意义的。 这时候我们就可以通过验证事件来完成这项功能。 例如 :清单 3: 验证事件的响应函数 safari.application.addEventListener("validate", validateCommand, false);
function validateCommand(event)
if (mand !== "close-other-tabs")
// 如果当前只打开了一个标签页, 则无需关闭其他标签页, 因此应当禁用此按钮.
event.target.disabled = event.target.browserWindow.tabs.length & 2;
}如上面代码所示 , 我们在全局页面中将这个验证事件注册到了 Safari 应用这一级别 , 在响应函数中很简单的根据当前 Safari 窗口所打开的标签页个数来禁用此按钮。 我们无需操心这个响应函数何时会被调用 , Safari 会在多个适当的时候调用它从而刷新最新的效果。 一个典型的例子就是 Gmail 扩展 , 验证事件就是获取新邮件个数的最佳地方了 , 也是用来更新工具栏按钮的 Gmail 未读邮件个数图标的最佳选择。上下文菜单事件我们已经了解了命令事件和验证事件 , 我们也已经知道这两者都和上下文菜单有关系。 当我们在扩展创建器中为我们的扩展添加了上下文菜单项时 , 同时也为它指定了相应的命令事件 , 这样当用户点击了这个上下文菜单项之后会触发这个命令事件。 而通过添加验证事件 , 我们可以在适当的时候开启或禁用这个上下文菜单项。 其实 , 关于上下文菜单我们可以做的更多 ! 比如动态修改上下文菜单项的标题 , 动态添加上下文菜单项 , 阻止上下文菜单的弹出等等 , 这些都可以通过上下文菜单事件来完成。我们来看一下当用户在网页中点击里鼠标邮件会触发哪些事件吧。 首先触发的是"contextmenu" DOM 事件 , 这一事件可以在注入 JavaScript 文件中注册 , 通过这个事件我们可以在用户事件中保存一些上下文信息以供后期使用 , 也可以根据上下文信息来阻止弹出上下文菜单。 接下来触发的是"contextmenu"扩展事件 , 这一事件可以在全局文件中或是工具栏文件中注册 , 我们可以通过这一事件动态添加上下文菜单项。 之后触发的验证事件能让我们根据"contextmenu" DOM 事件保存的上下文信息来禁用上下文菜单项或者更改上下文菜单项的标题。从上面所述能够看出 , "contextmenu"事件有两个版本 , 一种是在注入 JavaScript 文件中注册的 DOM 事件版本 , 另一种是在全局文件或工具栏文件中注册的扩展事件版本。 需要留意的是 , 在这两个版本中 , DOM 事件是会更早被触发的版本。在下面的这个例子里 , 我们在注入 JavaScript 文件中注册了"contextmenu"DOM 事件 , 并且使用 SafariContentBrowserTabProxy 代理的 setContextMenuEventUserInfo 方法将当前节点的名字保存在事件的 userInfo 属性中以便后期的事件使用。 接下来判断当前节点是否是输入域 , 如果是的话就禁止弹出上下文菜单。清单 4: "contextmenu"DOM 事件的响应函数 document.addEventListener("contextmenu", handleContextMenuDom, false);
function handleContextMenuDom(event) {
// 保存节点信息
safari.self.tab.setContextMenuEventUserInfo(event, event.target.nodeName);
// 禁止弹出上下文菜单
if (event.target.nodeName == "input") {
event.preventDefault();
}让我们再来看一下注册在全局页面中的"contextmenu"扩展事件 , 在这里我们用之前的"contextmenu"DOM 事件中保存起来的 event.userInfo 信息来判断是否需要在上下文菜单中动态添加一个新菜单项 :清单 5: "contextmenu"扩展事件的响应函数 safari.application.addEventListener("contextmenu", handleContextMenuExt, false);
function handleContextMenuExt(event) {
if (event.userInfo === "IMG") {
event.contextMenu.appendContextMenuItem("newTab", "Open this image in
new tab");
}不仅是动态的添加一条新的菜单项 , 之前保存的上下文信息有时对所要添加的菜单项也是非常有用的。 例如我们经常在浏览器中看到如下的效果 : 当我们在网页中选中一段文字 ( 例如 : "三里屯") 之后 , 点击鼠标右键所弹出的上下文菜单中会有"在 Google 中搜索'三里屯'"这样的菜单项。 可以看出"contextmenu"DOM 事件和"contextmenu"扩展事件在这样的应用中分别扮演了不同的角色 , 两者依次调用的顺序也是十分重要的。最后 , "contextmenu"DOM 事件中保存起来的 event.userInfo 信息同样对验证事件也十分有用。 例如 , 我们可以在验证事件中根据前面保存的上下文信息来动态修改我们的上下文菜单。 例如 :清单 6: 上下文菜单验证事件的响应函数 safari.application.addEventListener("validate", validateCommand, false);
function validateCommand(event)
event.target.title = "Search for \u201C" + event.userInfo + "\u201D on Google";
}消息事件及代理对象我们之前说过 , 在 Safari 应用层与页面内容层不能直接访问对方层里的内容 , 也不能直接调用对方的代码。 但我们的确存在这种需求 , 例如在 Safari 应用层中的全局页面需要知道当前页面中的内容从而判断自己的下一步操作 , 或是页面内容层的注入 JavaScript 需要调用定义在全局页面中的函数方法。 为了满足这种需求 , Safari 提供了代理对象及消息事件。请先参阅 Safari 扩展开发指南中的 , 其中清晰的描述了在 Safari 应用层和页面内容层各自负责的部分以及相互之间如何通过代理来调用对方。SafariContentWebPage 类代表了页面内容区域 , 而我们通过使用它的代理对象 SafariWebPageProxy 就能够从 Safari 应用层向页面内容层发送消息 , 从而达到间接调用的目的。 而要获得 SafariWebPageProxy 对象其实也是很容易的 , 我们只需用 SafariBrowserTab 对象即可获得。 想想也很合理 , Safari 应用层需要知道你想要访问的是哪一个 Safari 窗口中的哪一个标签页中的页面内容。 因此 , 我们在第一部分介绍的一个属性就派上用场了 :safari.application.activeBrowserWindow.activeTab.page我们可以用上面的这个例子返回的 SafariWebPageProxy 对象来和当前 Safari 窗口 (activeBrowserWindow) 的当前标签页 (activeTab) 内包含的页面内容层来发送信息。那么 , 怎么从页面内容层向 Safari 应用层发送消息呢 ? 说来方法也是类似的。 SafariBrowserTab 类代表了 Safari 浏览器中的标签页对象 , 而 SafariContentBrowserTabProxy 类则是让我们能够从页面内容层向 Safari 应用层发送消息。 要获得 SafariContentBrowserTabProxy 对象的方法也是类似的 , 我们上面说过 , SafariContentWebPage 对象代表了页面内容区域 , 而它的 tab 属性返回的正是我们需要的 SafariContentBrowserTabProxy 对象。 例如 :safari.self.tab上面的例子是定义在注入 JavaScript 文件中的 , 因此此时的 safari.self 实际上就是 SafariContentWebPage 对象 , 从而用它的 tab 属性获得了我们所需的 SafariContentBrowserTabProxy 对象。上面的两个流程看上去颇为复杂 , 但其实也是十分容易记忆的。 只要记得两个对象就可以查找到发送消息给对方层的方法。 一个是页面内容对象 (SafariContentWebPage), 一个是标签页对象 (SafariBrowserTab). 页面内容对象提供了 tab 属性来返回我们所需的标签页代理对象 , 而标签页对象提供了 page 属性来返回我们所需的页面内容代理对象。了解了如何发送消息之后 , 下面我们来看一下具体发送的消息格式是如何的。 前面已经提到 , 通过两个代理对象即可发送消息 , 而发送的消息格式为 dispatchMessage(name, data). 其中的 name 参数即我们可自定义的消息名称 , 而 data 参数可以有多种数据类型组成 , 例如布尔型 , 数字 , 字符串 , 数组等。 而收到消息事件后 , 可以用 event.name 和 event.message 来分别获取 dispatchMessage 中的 name 和 data 参数值。 下面我们分别来看一下在注入 JavaScript 文件中和全局页面中如何使用消息事件来互相调用吧。清单 7: inject.jsfunction requestFromJS() {
safari.self.tab.dispatchMessage("requestFromJS","Hello! Send from JS!");
function responseFromJS(theEvent) {
if (theEvent.name === "requestFromGlobal") {
var data=theEvent.
safari.self.addEventListener("message", responseFromJS, false);清单 8: global.html function requestFromGlobal() {
safari.application.activeBrowserWindow.activeTab.page.dispatchMessage
("requestFromGlobal", "Hello! Send from Global page!");
function responseFromGlobal(theEvent) {
if(theEvent.name === "requestFromJS")
var data=theEvent.
safari.application.addEventListener("message",responseFromGlobal,false);在这个例子里 , 我们从注入 JavaScript 文件和全局文件中各自向对方层发送了一个消息事件。 并且可以看到 , 无论是在 inject.js 还是 golbal.html, 我们都需要注册消息事件并提供相应的响应函数。 这样当对方层发送消息过来时 , 由这个响应函数统一处理 , 按照相应的事件名称分别处理。总结至此 , 我们已经了解了 Safari 扩展开发大致涉及到的主要方面 , 了解了如何启用 Safari 扩展 , 如何申请以及安装开发者证书 , 如何利用 Safari 自带的扩展开发器创建我们的第一个 Safari 扩展。 更为重要的是 , 我们学习了 Safari 扩展 JavaScript API 体系以及颇为重要的四种事件 ( 命令事件 , 验证事件 , 上下文菜单事件 , 消息事件 ). 至本文撰写时 , Apple 刚刚发布了 Safari 5.0.1 版本 , 在这一版本中缺省就开启了扩展功能 , 并且终于启用了 Safari 扩展中心 , 在这里我们可以找到各式各样的好玩有趣的扩展 , 也能够提交我们自己开发的扩展与他人分享。 赶紧动手开发我们自己的扩展吧 !本文仅代表个人观点 , 如有错误疏漏之处 , 请大家不吝指正 , 谢谢 !
参考资料 : 最新的 Apple Safari 5 版本增加了扩展(extension)功能,让开发人员可以像在 Firefox 和 Chrome 上开发插件或扩展一样来实现 Safari 浏览器功能的延伸。本文将详细介绍 Safari 5 中的这项新功能,并通过一个简单的例子来完整介绍 Safari 扩展的开发、部署流程及相关技术细节。: 包括参考文档库 , 示例代码 , 教学视频等相关资料: Safari 扩展开发的官方文档: Safari 扩展 API 文档: 只需注册一个免费的 Apple ID 即可从 iTunes 中下载。 而其中与本文关联最紧密的是 session505 和 session506 这两个讲座。: 同样需要通过 iTunes 下载。:通过专门关于 Web 技术的文章和教程,扩展您在网站开发方面的技能。:这是有关 Ajax 编程模型信息的一站式中心,包括很多文档、教程、论坛、blog、wiki 和新闻。任何 Ajax 的新信息都能在这里找到。,这是有关 Web 2.0 相关信息的一站式中心,包括大量 Web 2.0 技术文章、教程、下载和相关技术资源。您还可以通过
栏目,迅速了解 Web 2.0 的相关概念。查看 ,了解更多和 HTML5 相关的知识和动向。加入
developerWorks: 登录
标有星(*)号的字段是必填字段。
保持登录。
单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件。
在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。
所有提交的信息确保安全。
选择您的昵称
当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。昵称长度在 3 至 31 个字符之间。
您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。
标有星(*)号的字段是必填字段。
(昵称长度在 3 至 31 个字符之间)
单击提交则表示您同意developerWorks 的条款和条件。 .
所有提交的信息确保安全。
IBM PureSystems(TM) 系列解决方案是一个专家集成系统
通过学习路线图系统掌握软件开发技能
软件下载、试用版及云计算
static.content.url=/developerworks/js/artrating/SITE_ID=10Zone=Web developmentArticleID=619709ArticleTitle=实战 Safari 扩展开发 - 进阶篇
publish-date=}

我要回帖

更多关于 safari浏览器 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信