金山词霸即划即译设计随笔(三)

原创 2007年09月13日 15:00:00

如何获取光标的位置,在上一节中已经解决了。现在我们来进行第二步,如何获取选定的文本。

这一点也是至关重要的,因为我们要把用户选择的文本作为用户提交的输入来处理,作为参数提交查询请求。

原来从来没尝试过这一点,只好求助于google了,虽然第一次查相关资料有些盲目,但很幸运的是,我还是找到了。

var text=document.selection.createRange().text;

上面这句看起来很简单,就是为了得到用户在浏览器窗口中选择的文本对象,然后存入变量text中,以备下面使用。

为了便于大家理解,特在MSDN上抓来了下面的一段有关selection对象的说明,仅供参考:

Remarks

You can use the selection object as input from the user to identify which portion of the document to act on, or as output to the user to show the results of an action.

Users and scripts can create selections. Users create selections by dragging the mouse over a portion of the document. Scripts create selections by calling the select method on a text range or similar object. To get the active selection, apply the selection keyword to the document object. To carry out work on a selection, create a text range object from the selection using the createRange method.

A document can have only one selection at a time. The selection has a type that determines whether it is empty or contains a block of text or elements. Although an empty selection contains nothing, you can use it to mark a position in the document.

简单翻译如下:

说明:你可以利用selection对象把用户在当前窗口中的具体操作位置当作用户输入,也可以把它作为响应用户某一操作的结果输出给用户。

用户和编码人员可以创建selection对象。用户可以通过在窗体中的某个位置上拖动鼠标来创建selection对象,而编码人员则可以对文本序列或简单的对象调用select()方法来创建它。获取当前的选择内容,可以应用在文档内选择的关键字。为了实现选择内容的获取,可以使用selection对象的createRange()方法来创建一个文本序列。

一个文档对象往往只能有一个selection对象。selection对象拥有可以判断它是否为空或是否包含文本块或其他元素的特性。尽管一个空的selection对象不包含任何内容,但你可以用它来标记文档的一个位置。MSDN参考地址

在把从selection对象获得的值赋给text变量后,你就可以通过.length属性获取并判断它的长度了,以决定它是否为空。

MSN跟我交流

金山词霸即划即译设计随笔(五)

 本节该设计即划即译项目的数据处理层了。说起数据处理,还不得不提一下xmlhttprequest 的原理, 我没法用足够专业的术语来介绍xmlhttprequest,但我有我自己的语言和陋见。xmlh...
  • chemhenry
  • chemhenry
  • 2007年09月13日 16:22
  • 642

金山词霸即划即译设计随笔(六)

写完这一节,让我们完工吧!本节是最后一步了,也是综合的,交互性的。现在来看如何把从服务器端返回的响应结果,格式化后,显示在表示层里。大家在上一步看到了,我在响应流里直接写入了定义好的html代码。实际...
  • chemhenry
  • chemhenry
  • 2007年09月13日 16:55
  • 635

金山词霸即划即译设计随笔(一)

最近工作不是很忙,使得我可以有时间继续学习 AJAX技术。完全是个偶然的机会,我发现了一个叫“爱词霸沙龙”的英语学习网站,其实我是冲着找几个词友们推荐的英文歌曲去的,浏览网站过程中,我却发现了改网站运...
  • chemhenry
  • chemhenry
  • 2007年09月13日 11:22
  • 859

金山词霸即划即译设计随笔(四)

如果说上面的两步是为了获取用户在客户端提交的表单输入的话,那可以姑且称上面是为表示层(GUI)做准备的。下面,我们来设计真正的用户表示层-------结果显示层(div)。上面提到过,设计该程序时,选...
  • chemhenry
  • chemhenry
  • 2007年09月13日 15:35
  • 474

金山词霸即划即译设计随笔(二)

 下面按照上述步骤,一一细说。用 javascript 获取当页面上鼠标(光标)位置在许多情况下都会用到,比如拖放,悬停提示(tooltip) 等等。当然,这里我们依然要面对浏览器的兼容问题,在不同的...
  • chemhenry
  • chemhenry
  • 2007年09月13日 12:01
  • 443

解决:金山词霸在Firefox 3中实现屏幕取词

解决方法:你当然可以弃金山词霸而改用灵格斯,或者弃火狐改用微软的Internet Explorer。但如果你和我一样都不想放弃金山词霸和火狐的话,方法只有一个:在火狐3中调用微软IE实现金山词霸屏幕取...
  • babygjx
  • babygjx
  • 2010年07月16日 13:58
  • 1505

金山词霸在360极速浏览器下不能取词

这个问题,整整一上午,我在网上搜了无数遍,看了无数个帖子,有说兼容模式运行的,360的工作人员居然还有说在快捷键的属相当中加什么-no-sandbox的,还有说安装取词插件的等等等等。没有一个是正确的...
  • wolfalcon
  • wolfalcon
  • 2015年04月08日 16:46
  • 7864

即点即译

点译阅读 静读天下
  • yangxiaojun9238
  • yangxiaojun9238
  • 2012年12月26日 09:52
  • 556

关于代码即设计的随想

记得大三的一堂软件工程课上,留洋归来的老师说,编码在国外已经是蓝领了,想当白领,一定要做设计。根据这种分法,很不幸,我当蓝领当了很多年。一直以来,有个问题困扰着我。设计是什么?或者设计包括什么?如果把...
  • tintinr
  • tintinr
  • 2014年05月11日 17:46
  • 744

让你的blog支持即划即译

    今天,我无意中看到了《你想让个人站点和博客"E"起来吗?》这篇文章,它是直接转接到“多爱英文”爱词霸免费工具包。这个工具包能为你的blog添加词典搜索、短句搜索、爱词霸每日一句、爱词霸每日E文...
  • riag
  • riag
  • 2006年10月19日 14:46
  • 1181
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:金山词霸即划即译设计随笔(三)
举报原因:
原因补充:

(最多只允许输入30个字)